这是 PDO 的糟糕技术吗?
Is this bad technique for PDO?
我一直在为几个个人项目使用 PDO 准备语句。
我一直在这样做:
= 1;
= 2;
= 3;
$sql = "INSERT INTO table (field1, field2, field3) VALUES (?, ?, ?)";
$stmt = $conn->prepare($sql);
$stmt->execute(array(, , ));
这似乎工作正常,但我想知道这样做是否有任何安全问题?
它甚至还被认为是准备好的语句吗?
它仍然是一个准备好的声明,这样做没有任何具体的安全问题。
但是,对于更复杂的查询,或者参数数量更多的地方,您可以考虑使用绑定参数。您和未来的代码维护者可以更轻松地进行可视化解析。
$sql = "INSERT INTO table (field1, field2, field3) VALUES (:f1, :f2, :f3)";
$stmt = $conn->prepare($sql);
$stmt->bindParam(':f1', $f1);
$stmt->bindParam(':f2', $f2);
$stmt->bindParam(':f3', $f3);
$stmt->execute();
我一直在为几个个人项目使用 PDO 准备语句。
我一直在这样做:
= 1;
= 2;
= 3;
$sql = "INSERT INTO table (field1, field2, field3) VALUES (?, ?, ?)";
$stmt = $conn->prepare($sql);
$stmt->execute(array(, , ));
这似乎工作正常,但我想知道这样做是否有任何安全问题?
它甚至还被认为是准备好的语句吗?
它仍然是一个准备好的声明,这样做没有任何具体的安全问题。
但是,对于更复杂的查询,或者参数数量更多的地方,您可以考虑使用绑定参数。您和未来的代码维护者可以更轻松地进行可视化解析。
$sql = "INSERT INTO table (field1, field2, field3) VALUES (:f1, :f2, :f3)";
$stmt = $conn->prepare($sql);
$stmt->bindParam(':f1', $f1);
$stmt->bindParam(':f2', $f2);
$stmt->bindParam(':f3', $f3);
$stmt->execute();