我已经读过,如果您使用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。但是如果您不这样做,那么问题就不在于您准备了带有参数的查询……这是另外一回事。