<分区>
Possible Duplicate:
Are prepared statements cached server-side across multiple page loads with PHP?
我正在处理一个新项目,并且第一次使用参数化查询(PHP 和 MySQL 数据库)。我读到它们参数化查询被缓存,但我想知道它们被缓存了多长时间。例如,假设我有一个函数“getAllUsers()”,它从用户表中获取所有事件用户 ID 的列表,对于每个 ID,创建一个用户对象并调用函数“getUser($user)”用于设置对象的其他属性。 'getUser()' 函数有自己准备好的查询,函数末尾有一个 stmt->close()。
如果我这样做,我在“getUser()”中的参数化查询是否完全利用了缓存,或者查询是否在每次 stmt->close() 后从缓存中销毁?
注意:如果一个页面只需要单个用户对象的数据,我也会使用 getUser() 函数,所以我想这样做以确保如果用户表发生变化,我只需要更新一个查询。
这是执行此类操作的正确方法还是有更好的方法?
更新:有趣的是,刚刚在 php.net 的准备语句手册 (http://php.net/manual/en/mysqli.quickstart.prepared-statements.php) 上看到了这个
Using a prepared statement is not always the most efficient way of executing a statement. A prepared statement executed only once causes more client-server round-trips than a non-prepared statement.
所以我想参数化查询的主要好处是防止 SQL 注入(inject),不一定能加快速度,除非它是一次重复的查询。