gpt4 book ai didi

php - 我需要坚持准备好的陈述吗?

转载 作者:可可西里 更新时间:2023-11-01 12:17:20 24 4
gpt4 key购买 nike

我有以下代码:

public function getDefinitions($wordID) {
$query = $this->dbc->prepare('SELECT * FROM definitions WHERE wordID = ?');

$query->bind_param('i', $wordID);
$query->execute();

// ...

$query->close();

return $result;
}

这似乎会重新创建 prepared statement对于每次调用。这似乎没有充分利用准备好的陈述的全部好处。特别是在这些准备语句是 stored server side 的情况下.是真的吗?

如果是这样,我是否应该存储 prepare 语句(在本例中为属性)以在调用之间保留它。有没有办法在请求之间保留准备好的语句?我假设这本质上是一个存储过程?

目前我正在使用 MySQLi。如果我使用其他驱动程序(例如 PDO),请注意任何 API 差异。

最佳答案

should I store the prepare statement (in this case as a property) to persist it between invocations.

我不会说你“应该”。如果您预见到很多后续调用(您不能将它们组合起来一次调用),您可能会这样做。无论哪种方式,您都几乎无法注意到现实生活中的差异。

Is there a way to persist the prepared statement between requests?

在 PHP 中 - 没有。准备好的语句是基于连接的,连接随请求一起关闭,持久连接也无济于事,因为 mysqli is using designated mechanism在重新使用之前清理连接状态。

Please note any API difference if I were using another driver (e.g. PDO).

PDO 优于 mysqli,因为它可以模拟 准备好的语句,甚至可以消除两次​​数据库调用这样微不足道的开销,这使它更适合实际使用(除了其他主要优点) .

简而言之,原生准备语句的“准备一次-多次执行”特性仅对大量查询(从数千开始)才会有显着效果。

关于php - 我需要坚持准备好的陈述吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23937786/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com