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

select * from Table where user=?"
and then mysqli_stmt_bind_param($stmt, "s", "Harry");


并且用户“ harry”在数据库中不存在,因此num_rows将返回0。然后我立即用user="harry"在数据库中插入新行并再次运行脚本,是return num_rows=1还是return num_rows=0,因为结果被缓存了吗?

最佳答案

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

所以...回答您的问题...第二次您应该获得num_rows = 1。但是如果您不这样做,那么问题就不在于您准备了带有参数的查询……这是另外一回事。

10-04 10:57