我有一个PHP类来处理数据并将其存储在MySQL数据库中.我在保存数据时出于安全原因通过PDO使用预准备语句,但由于类很大,这些预处理语句是在对象生命周期内被调用数千次的不同函数内创建的(从1分钟到30分钟).
我想知道的是,如果有任何原因我无法在类构造函数中准备语句并将句柄保存在成员变量中以避免语句被多次准备.
有什么理由不行吗?我不明白为什么不这样做,但我以前从未见过它,这让我想知道出于某种原因这样做是不是很糟糕.
IE是这样的:
Class MyClass {
private stmt1;
function __construct($dbh) {
$this->stmt1 = $dbh->prepare('SELECT foo FROM bar WHERE foobar = :foobar');
}
private function doFoo() {
$this->stmt1->execute(...)
...
}
}
Run Code Online (Sandbox Code Playgroud)
我在保存数据时出于安全原因通过PDO使用预准备语句,但由于类很大,这些预处理语句是在对象生命周期内被调用数千次的不同函数内创建的(从1分钟到30分钟).
每当我看到赏金问题时,我总会问自己,"他们甚至在解决正确的问题吗?" 在这个对象的生命周期中,用不同的参数执行相同的查询数千次真的是最好的方法吗?
SELECTs,那么可能更好的查询一次获取更多信息会更好.INSERT那么批量插入可能会更好地为您服务.如果在评估上述选项之后,您决定在对象的生命周期内仍需要数千次调用这些语句,那么可以缓存预准备语句的结果:
这样您就可以看到您更改的每件作品的影响.我怀疑,如果你真的称呼这些查询数千次,那么这些变化中的部分或全部将对你有帮助,但你必须在测量之前和之后进行测量才能知道.
| 归档时间: |
|
| 查看次数: |
536 次 |
| 最近记录: |