如果我有一个简单的准备好的查询:
$stmt = $conn->prepare("INSERT INTO MyGuests (firstname, lastname, email) VALUES (?, ?, ?)");
$stmt->bind_param("sss", $firstname, $lastname, $email);
// set parameters and execute
$firstname = "John";
$lastname = "Doe";
$email = "john@example.com";
$stmt->execute();
我只在页面的生命周期内执行一次查询。
是否值得为这样的查询使用准备好的mysql语句?
答案 0 :(得分:1)
您最需要的是参数化查询的安全性。执行参数化查询的API恰好与预准备语句的API相同。或者换句话说,将查询结构与值的提交分开的API可以一举两得:
如果您只是使用其中一个,那么它是值得的,您不需要同时使用这两个方面来证明prepare
API的使用是正确的。
手动转义值的替代方法总是更容易出错并且冗长。