这是 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();