我一直在为一些个人项目使用PDO预备语句。
我一直这样做:
$1 = 1;
$2 = 2;
$3 = 3;
$sql = "INSERT INTO table (field1, field2, field3) VALUES (?, ?, ?)";
$stmt = $conn->prepare($sql);
$stmt->execute(array($1, $2, $3));
它似乎工作正常,但我想知道是否有任何安全问题这样做?
它是否仍被视为准备好的声明?
答案 0 :(得分:1)
这仍然是一份准备好的声明,这样做没有任何具体的安全问题。
但是,您可以考虑将绑定参数用于更复杂的查询,或者存在更多参数的情况。您和未来的代码维护者可以更容易地进行可视化解析。
$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();