是否值得为一个查询使用准备好的mysql语句?

时间:2018-01-24 08:16:28

标签: php mysql mysqli

如果我有一个简单的准备好的查询:

$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语句?

1 个答案:

答案 0 :(得分:1)

您最需要的是参数化查询的安全性。执行参数化查询的API恰好与预准备语句的API相同。或者换句话说,将查询结构与值的提交分开的API可以一举两得:

  1. 将任意值安全传输到数据库引擎。
  2. 已解析查询的可重用性。
  3. 如果您只是使用其中一个,那么它是值得的,您不需要同时使用这两个方面来证明prepare API的使用是正确的。

    手动转义值的替代方法总是更容易出错并且冗长。