gpt4 book ai didi

php - 为什么在fetchAll()之前需要execute()

转载 作者:搜寻专家 更新时间:2023-10-30 21:47:37 25 4
gpt4 key购买 nike

我有以下代码:

$clicks = $statement->prepare($query);
$offers->bindValue(1, $id, PDO::PARAM_INT);
$clicks->execute();
$results = $clicks->fetchAll();
  • 查询正常
  • 绑定(bind)工作正常

真正让我好奇的是,为什么我必须先执行 () 查询才能调用 fetchAll()。我之所以得出这个解决方案/假设,是因为 execute() 仅返回 true/false 并且在不调用 execute() 的情况下,fetchAll() 不会返回任何内容。这是正常的做法吗?

很久以前,我一直在使用 PDO,所以我不太记得如何正确处理它。

非常感谢

(我用的是PHP5.3,上面用到的代码是PDO/PDOStatement)

最佳答案

好吧,SELECT * FROM myTable 只是一段文本,您必须先将它发送到服务器,服务器对其进行解析等,然后才能fetchAll()fetchAll 不会自动执行 execute() 的原因是 fetchAll 可以调用两次,而您不想执行查询两次,如果你只需要做一次的话:)

它还与参数绑定(bind)等相关。参数可以更改,但您可能仍希望对原始参数值使用获取函数。

这是一种设计,它使使用 PDO 进行编程变得更加容易。它只需要 1 行代码 :)

您可能会创建一个包装器并让 fetchAll() 同时执行执行和获取,但您肯定会遇到麻烦。

编辑:另一个原因是 execute() 实际上采用了一个可选的参数数组,它允许您绑定(bind)参数。 $stmt -> execute(array($id)); 将允许您跳过 bindValue 调用。

关于php - 为什么在fetchAll()之前需要execute(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10278813/

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