预准备语句和mysqli_query之间有什么区别?

时间:2011-12-27 13:35:19

标签: php mysqli

我读过一本关于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>";  

哪种方法最好?

1 个答案:

答案 0 :(得分:4)

准备好的语句有一些优点,其中一个重要的是对SQL注入错误更加万无一失。我认为这是他们最大的优势。

关于性能,我们必须考虑SQL解析,查询计划创建和结果获取阶段的成本与查询执行的成本:如果后者的I / O占主导地位(通常是这样),您将获益准备好的东西或mysqli很少。

对于简单的重复查询 - 通常在webapps的简单部分中使用 - MySQL查询缓存适用于完全相同且完整的SQL文本的查询,因此准备好的查询将不会使用它。根据我的经验,这不仅可以否定准备好的查询的任何性能优势。