mysqli准备缓存结果吗?

时间:2014-04-12 18:33:12

标签: php mysql sql

我已经读过,如果您使用mysqli prepare而不是mysqli查询,即使您运行脚本1000次,它也只会在数据库上运行一次。 这是否意味着,如果我运行像

这样的准备声明
select * from Table where user=?"
and then mysqli_stmt_bind_param($stmt, "s", "Harry");

并且用户“harry”在数据库中不存在,因此num_rows将返回0.然后我使用user="harry"立即在数据库中插入新行并再次运行脚本{{1}或者仍然return num_rows=1,因为结果是缓存的?

1 个答案:

答案 0 :(得分:0)

您看到新插入的行的事实取决于其他因素...事务和事务隔离。准备语句只是意味着服务器知道将要发生的事情,并计算出优化语句的计划。然后,您可以使用相同或不同的参数多次运行查询,服务器将不再需要对其进行分析...只需执行它。

所以...回答你的问题......第二次你应该得到num_rows = 1。但是,如果你不这样做,问题不在于你准备了一个带参数的查询......它是另一回事。