准备好的语句:它们可以处理标识符和关键字吗?
动态查询利用变量来指定表、字段和搜索值。虽然将变量连接到查询中已被证明是成功的,但使用 PDO 的 bindParam() 或 bindValue() 绑定变量会导致空数组。
为什么不起作用:
PDO 准备好的语句仅允许数据文字的占位符。尝试使用占位符表示标识符(表或字段名称)或关键字将不起作用。
解决方案:
标识符: 要包含表示标识符的变量,请遵循以下步骤规则:
关键字:
示例代码:
// Safely format identifier $field = "`" . str_replace("`", "``", $field) . "`"; $sql = "SELECT * FROM t ORDER BY $field"; // Whitelist keyword $dir = $_GET['dir'] == 'DESC' ? 'DESC' : 'ASC'; $sql = "SELECT * FROM t ORDER BY field $dir";
以上是准备好的语句可以处理数据库标识符和关键字吗?的详细内容。更多信息请关注PHP中文网其他相关文章!