问题标签 [prepared-statement]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
766 浏览

java - 在 JDBC 中使用命名参数时是否有任何非法字符?

我在查询中使用命名参数来匹配类似地图的数据结构中的字段。数据结构可以有字段,或者其他类似地图的数据结构。这种嵌套结构是可重复的,令人作呕。

我想使用类似 XPath 的语言来命名查询中的参数,可以对其进行解析以指示进一步的嵌套查找。

所以问题是,在命名参数声明中哪些字符是合法的?

0 投票
5 回答
97889 浏览

android - 如何在 Android 的 SQlite 中使用准备好的语句?

如何在 Android 的 SQlite 中使用准备好的语句?

0 投票
3 回答
2414 浏览

java - 使用 JDBC,如何将多个 ID 替换为“DELETE FROM T WHERE id IN (?)”

我有一些代码可以生成一组我想从数据库表中删除的主键值。

我想使用 PreparedStatement 来执行相当于

知道怎么做吗?

0 投票
3 回答
20547 浏览

php - 绑定布尔值的bind_param问题

mysqli_stmt::bind_param在 PHP5 中使用绑定布尔值时遇到问题。

SQL 查询如下:

'read' 是一个 tinyint,0 或 1,因为我在使用 mysqli 时遇到了一些问题。所以我在 bind_param 中列出的类型是:

我也尝试过 'sdsb' 和 'sdss' 但似乎没有任何效果,而且我总是收到以下信息:

警告:mysqli_stmt::bind_param():变量数与准备语句中的参数数不匹配

当我删除语句中的读取字段时,一切正常。我已经没有这个想法了。当然 bind_param 与布尔值一起使用?

0 投票
8 回答
3073 浏览

sql-server - 您可以在 sql server 准备语句中参数化排序顺序吗?

我有一个带有 VB.Net 前端的 .Net Web 系统,它通过 ADO.Net 与 SQL Server 2005 后端通信。本质上,我想做的是:

排序顺序将通过查询字符串等传递。此代码抛出“'@SortOrder' 附近的语法不正确。无法准备语句。”

这甚至可能吗,还是我没有看到一些非常愚蠢的语法错误?

(而且,是的,客户端只运行 .net 2.0,所以遗憾的是,基于 LINQ 的解决方案无法工作。

谢谢大家!

更新/回应:

嗯,我就是这么想的。谢谢大家的理智检查。(在某些情况下,命令字符串当前正在动态构建,但我们正在将系统向更准备好的语句方向移动,这是我不知道可能的边缘情况之一。

再次感谢!

0 投票
1 回答
143 浏览

java - 如何使用带有 RowSet 的 LIKE 放置 IN 参数?

我一直在努力让一个 IN 参数在 LIKE 语句中工作几个小时!我正在使用 CachedRowSet,据我所知,它应该遵循与 PreparedStatement 相同的规则。
这是基本查询:

someString 是一个已知的 id,但数据库(顺便说一下是 PostgreSQL)条目有一个未知的 2 字符后缀。

0 投票
6 回答
11584 浏览

php - 什么时候*不*使用准备好的语句?

我正在重新设计一个使用最小数据库的 PHP 驱动的网站。原始版本使用“pseudo-prepared-statements”(执行引用和参数替换的 PHP 函数)来防止注入攻击并将数据库逻辑与页面逻辑分离。

用使用 PDO 和实际准备好的语句的对象替换这些临时函数似乎很自然,但是在阅读了它们之后,我不太确定。PDO 似乎仍然是一个好主意,但准备好的语句的主要卖点之一是能够重用它们……我永远不会。这是我的设置:

  • 这些陈述都非常简单。大多数都是形式SELECT foo,bar FROM baz WHERE quux = ? ORDER BY bar LIMIT 1。该批次中最复杂的语句只是三个这样的选择与UNION ALLs 连接在一起。
  • 每个页面命中最多执行一个语句并且只执行一次。
  • 我在一个托管环境中,因此对通过亲自进行任何“压力测试”来抨击他们的服务器持谨慎态度。

鉴于使用准备好的语句至少会使我正在进行的数据库往返次数增加一倍,我最好避免使用它们吗?我是否可以PDO::MYSQL_ATTR_DIRECT_QUERY在保留参数化和注入防御优势的同时避免多次数据库访问的开销?或者,与执行我不应该担心的未准备好的查询相比,准备好的语句 API 使用的二进制调用是否表现得足够好?

编辑:

感谢所有好的建议,伙计们。这是我希望我可以将多个答案标记为“已接受”的地方——许多不同的观点。不过,最终,我必须对rick给予应有的回报……如果没有他的回答,即使听从了每个人的建议,我也会幸福地离开并做完全错误的事情。:-)

它是模拟的准备好的语句!

0 投票
5 回答
443 浏览

sql - 强制执行准备好的语句的方法

我刚刚(偶然)在我正在从事的项目中发现了另一个愚蠢的根本没有清理的 sql 注入缺陷......我已经厌倦了。
您对如何消除此类不良 sql 语句并在可行的情况下强制执行准备好的语句有任何建议吗?现在我更喜欢这样的解决方案

是由于这似乎不太可能,是否有例如静态代码分析工具来查找这些东西(达到一定的可靠性)?或者还有什么你会推荐的?
编辑:软技能方法“请不要使用它们,(通常)有更好的方法”在过去似乎效果不佳。因此,我真的更喜欢首先阻止此类查询的东西。不是故意破坏现有代码,而是为了未来的项目,一些“没有这样的查询”解决方案;-)

0 投票
2 回答
3759 浏览

php - 将结果绑定到 php 数组中

我正在尝试使用以下代码从查询中获取结果并将其显示在tes.php页面中。

db.inc.php

测试文件

我没有收到错误消息,但没有显示结果,它只是一个空白页。

我做错了什么?

0 投票
6 回答
11393 浏览

java - 在 JDBC 中,为什么准备好的语句的参数索引从 1 而不是 0 开始?

在 Java 的其他任何地方,任何有索引的东西都从 0 开始。这里有改变的原因还是这只是糟糕的设计?