Jul*_*s F 1 php mysql database pdo
我有以下代码:
$clicks = $statement->prepare($query);
$offers->bindValue(1, $id, PDO::PARAM_INT);
$clicks->execute();
$results = $clicks->fetchAll();
Run Code Online (Sandbox Code Playgroud)
实际上让我想知道的是,为什么我必须首先执行()查询才能调用 fetchAll()。我已经提出了这个解决方案/假设,因为execute()仅返回true/false并且不调用execute(),fetchAll()将不会返回任何内容。这是正常的做法吗?
我以前一直在使用 PDO,很久以前,所以我不太记得如何正确处理它。
非常感谢
(我用的是PHP5.3,上面使用的代码是PDO/PDOStatement)
好吧,SELECT * FROM myTable这只是一段文本,您必须先将其发送到服务器,服务器对其进行解析等,然后才能进行fetchAll()。fetchAll不会自动执行的原因execute()是它fetchAll可以被调用两次,并且如果您只需执行一次,您不想执行两次查询:)
它还与参数绑定等相关。参数可以更改,但您可能仍然希望对原始参数值使用获取函数。
这是一个设计问题,这使得使用 PDO 进行编程变得更加容易。它只需要多一行代码:)
您可能可以创建一个包装器并fetchAll()同时执行执行和获取,但您肯定会遇到麻烦。
编辑:另一个原因是execute()实际上需要一个可选的参数数组,它允许您绑定参数。$stmt -> execute(array($id));将允许您跳过bindValue呼叫。
| 归档时间: |
|
| 查看次数: |
1684 次 |
| 最近记录: |