我是否创建了太多的mysqli对象


Am I creating too many mysqli objects?

每次创建mysqli对象时,我都使用如下准备好的mysqli语句(有时每页几个):

$update_foobar_statement = $mysqli->prepare("UPDATE foo SET bar  = ? WHERE foobar = ?");
$update_foobar_statement->bind_param('ss', $bar, $foobar);
$update_foobar_statement->execute();

我实际上是在创建mysqli对象的副本。这让我想到我可能创建了太多的对象,损害了我的web应用程序的整体性能。

我喜欢通过初始变量澄清mysqli语句正在做什么,但这是不好的做法吗?我应该这样做吗?

$mysqli->prepare("UPDATE foo SET bar  = ? WHERE foobar = ?");
$mysqli->bind_param('ss', $bar, $foobar);
$mysqli->execute();

在第二种情况下,您还必须存储$mysqli->prepare的返回值,因此唯一需要讨论的是变量的名称以及您是否将重用它。

这在底线上并不重要。在内存方面,为每个查询使用单独的变量理论上可能会导致更高的需求,但在至少达到数万个之前,这不会产生实际效果。所以不用担心这个

如果总是相同的SQL,您可以重新执行该部分:

$update_foobar_statement->bind_param('ss', $bar, $foobar);
$update_foobar_statement->execute();