Pas*_*TIN 13
使用PDO::prepare()
和使用预备语句时PDOStatement::execute()
,您没有任何引用:这将自动完成.
但是,有时,您不会(或不能)使用预准备语句,并且必须编写完整的SQL查询并执行它们PDO::exec()
; 在这些情况下,您必须确保正确引用字符串 - 这是PDO::quote()
方法有用的时候.
Ros*_*oss -1
虽然这可能不是唯一的用例,但它是我唯一需要的用例quote
。您只能使用 传递值PDO_Stmt::execute
,因此例如此查询将不起作用:
SELECT * FROM tbl WHERE :field = :value
Run Code Online (Sandbox Code Playgroud)
quote
进来,这样你就可以这样做:
// Example: filter by a specific column
$columns = array("name", "location");
$column = isset($columns[$_GET["col"]]) ? $columns[$_GET["col"]] : $defaultCol;
$stmt = $pdo->prepare("SELECT * FROM tbl WHERE " . $pdo->quote($column) . " = :value");
$stmt->execute(array(":value" => $value));
$stmt = $pdo->prepare("SELECT * FROM tbl ORDER BY " . $pdo->quote($column) . " ASC");
Run Code Online (Sandbox Code Playgroud)
并且仍然期望$column
在查询中被安全地过滤。
归档时间: |
|
查看次数: |
15107 次 |
最近记录: |