PDO 准备语句可以绑定标识符或语法关键字吗?
尝试使用表示表、字段的变量构造动态查询/column 以及要搜索的值,在使用 PDO 准备好的语句时可能会遇到意想不到的困难。具体来说,使用bindParam() 或bindValue() 绑定这些变量可能会导致结果集为空。
要深入研究问题的症结,了解 PDO 占位符被指定用于表示数据文字至关重要。因此,尝试将它们用作标识符(如表名或字段名)或语法关键字(例如“LIKE”)可能会导致错误的行为。
具体来说,PDO 不提供对绑定标识符的固有支持. 这意味着开发人员必须承担自己处理这些标识符的责任。为了确保正确执行,需要遵守严格的规则:
绑定标识符规则:
这些格式规则可以防止语法错误和 SQL 注入漏洞。
绑定语法关键字的规则:
示例:
考虑以下代码片段,它遵循上述规则:
$allowed = array("name", "price", "qty"); $key = array_search($_GET['field'], $allowed); $field = $allowed[$key]; $query = "SELECT $field FROM t"; // Value is safe
总之,虽然 PDO 准备好的语句在绑定数据文字方面表现出色,但它们缺乏对绑定标识符或语法关键字的支持。通过认真遵循概述的规则,开发人员可以确保安全、准确地执行利用这些关键组件的动态查询。
以上是PDO 准备语句可以绑定表名和列名或 SQL 关键字吗?的详细内容。更多信息请关注PHP中文网其他相关文章!