Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 为一个查询使用准备好的mysql语句是否值得?_Php_Mysql_Mysqli - Fatal编程技术网

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

Php 为一个查询使用准备好的mysql语句是否值得?,php,mysql,mysqli,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"; $em

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

$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语句值得吗

这里最需要的是参数化查询的安全性。用于执行参数化查询的API恰好与用于准备语句的API相同。或者换句话说,能够将查询结构与值提交分离的API一举两得:

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


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

您是在问性能问题吗?您试图解决的性能问题是什么?是的,可以防止SQL注入。绝对是的!如果是用户提供的数据POST、GET等,则为是。如果是静态数据,那么基本上你会问:安全性真的值得一次查询吗?。这就等于问我是否应该只在一条路上系一次安全带?。答案当然是肯定的。