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 次 |
| 最近记录: |