您在何时何地在PDO中使用quote方法?考虑到以下事实,我问这个问题:在PDO中,所有引用都是由PDO对象完成的,因此,不应对用户输入进行转义/引用等操作。这让人想知道为什么担心如果不使用quote方法反正在准备好的陈述中?
虽然这可能不是唯一的用例,但它是我唯一需要的quote用例。您只能使用传递值PDO_Stmt::execute,例如,该查询将不起作用:
quote
PDO_Stmt::execute
SELECT * FROM tbl WHERE :field = :value
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");
并且仍然希望$column在查询中安全地对其进行过滤。
$column