当前位置: 首页 > 面试题库 >

参数化查询的示例

沃驰
2023-03-14
问题内容

关闭。 此问题不符合堆栈溢出准则。它当前不接受答案。

想改善这个问题吗? 更新问题,使其成为Stack Overflow
的主题。

6年前关闭。

谁能给我示例如何在MySQL / PHP中使用参数化查询的例子?


问题答案:

参数化查询本质上是抽象出所有输入的查询。这具有几个良好的副作用,例如使所有输入无害(即不可能进行有害注入),并且由于它是预先分析和编译的,因此在重复使用时使其更快,因此引擎知道如何应用给定的输入。纯mysql中的一个示例是:

PREPARE qry FROM "INSERT INTO tbl VALUES (?)";

现在,该语句已编译并缓存,可以重复执行,而无需重新编译和解释它:

SET @var = "some input";
EXECUTE qry USING @var;
SET @var = "some other input";
EXECUTE qry USING @var;

在PHP中使用时,通常是这样的(缩短的):

$stmt = prepare('INSERT INTO tbl VALUES(?)');
execute($stmt, array("some input"));
execute($stmt, array("some other input"));
execute($stmt, array("some more input"));


 类似资料:
  • 问题内容: 我很难使用MySQLdb模块将信息插入到我的数据库中。我需要在表中插入6个变量。 有人可以帮我这里的语法吗? 问题答案: 提防对SQL查询使用字符串插值,因为它不能正确地转义输入参数,并使您的应用程序容易受到SQL注入漏洞的影响。 这种差异看似微不足道,但实际上它是巨大的 。 不正确(存在安全问题) 正确(带有转义符) 这增加了混乱,即用于绑定SQL语句中的参数的修饰符在不同的DB A

  • 问题内容: 我有一个查询,我试图填充我要参数化的CFChart: 这是我尝试过的: 当我将查询更改为此时,它将以某种方式破坏CFChart。屏幕上没有出现任何CFError,但是我的CFChart为空白。 我在查询中将其范围缩小到与此相关: 当我删除查询的此参数化部分并放入 有用。 谁能对此有所启发? 问题答案: 屏幕上没有出现任何CFError,但是我的CFChart为空白。 暂时忽略正确的方法

  • 问题内容: 我的DataAcess类中具有以下功能,但未显示任何结果。 我的代码如下: 我也尝试过: 但是它可以很好地运行而无需像这样进行参数设置: 如何使用 @ProductName 参数化编写此代码? 问题答案: 你应该用 代替 为什么?因为在查询中,您的参数在引号内。在报价,SQL会将其识别为一个 字符串字面量 和 从来没有 看到它作为一个参数。

  • 问题内容: 我已经使用了参数化查询次数,我知道它有助于防止SQL注入。但是,我想知道我是否可以知道在参数化查询中防止SQL注入的基本逻辑是什么,原因很简单,但我不知道。我试图搜索google的基本知识,但是每次我找到一个示例,说明如何在Asp.net中使用参数化查询。 我知道制作一个特殊类来停止SQL注入中使用的特殊字符,例如(’,-etc),但是仅停止特殊字符会完全阻止SQL注入吗? .net参

  • 问题内容: 我很难使用MySQLdb模块将信息插入到数据库中。我需要在表中插入6个变量。 有人可以帮我这里的语法吗? 问题答案: 提防对SQL查询使用字符串插值,因为它不能正确地转义输入参数,并使您的应用程序容易受到SQL注入漏洞的影响。这种差异看似微不足道,但实际上它是巨大的。 不正确(存在安全问题) 正确(带有转义符) 这增加了混淆,用于绑定SQL语句中的参数的修饰符在不同的DB API实现之

  • 我正在尝试查询一组多边形(在运行时传入)中的任何一个是否与存储在数据库中“enclosing_polygons”字段中的一组多边形相交,这是一个 MultiPolygonField。 下面是查询的示例: 这个查询可以很好地处理硬编码的值,但是当我试图参数化它时,Postgres似乎不能识别?当我试图填充多边形点时,将它们作为参数。 当我设置前两个参数(针对field1和field2)时,这些JDB