我读过一本关于PHP& amp; MySQL的。 准备好的声明使用二进制协议,但mysqli缺乏此功能。 另外我读过准备好的语句可以缓存(它们的执行计划)并且比mysqli_query更快,当然更安全? 什么时候我们应该使用预备语句和mysqli_query?
修改
让我们假设我有以下查询:
echo "<table>";
echo "<tr class ='tablehead'><td>Name</td><td>Location</td><td>Review</td><td>Image</td> <td>Thumb</td></tr>";
while ($row = mysql_fetch_array($query))
{
echo "<tr>";
echo "<td>" . $row['user_fname'] . "</td>";
echo "<td>" . $row['user_location'] . "</td>";
echo "<td>" . $row['user_review'] . "</td>";
echo "<td>" . $row['user_image'] . "</td>";
echo "<td>" . $row['user_thumb'] . "</td>";
echo "</tr>";
}
echo "</table>";
哪种方法最好?
答案 0 :(得分:4)
准备好的语句有一些优点,其中一个重要的是对SQL注入错误更加万无一失。我认为这是他们最大的优势。
关于性能,我们必须考虑SQL解析,查询计划创建和结果获取阶段的成本与查询执行的成本:如果后者的I / O占主导地位(通常是这样),您将获益准备好的东西或mysqli很少。
对于简单的重复查询 - 通常在webapps的简单部分中使用 - MySQL查询缓存适用于完全相同且完整的SQL文本的查询,因此准备好的查询将不会使用它。根据我的经验,这不仅可以否定准备好的查询的任何性能优势。