gpt4 book ai didi

php - 为什么我不能遍历 $q->fetch() 两次?

转载 作者:行者123 更新时间:2023-11-29 04:05:24 25 4
gpt4 key购买 nike

假设我需要使用从 PDO 准备语句得到的结果循环两次。

第一个循环正常,下一个不工作

var_dump(q->fetch()) 的值为空数组。有什么想法吗?

<?php
$q = $dbconnection->prepare("SELECT * from users WHERE role=?");
$q->execute(array('$id')); //Boolean true or false


// first loop
while ($row = $q->fetch(PDO::FETCH_ASSOC)) {
echo "<br/>" . $row['user_id'] . "--". $row['fname']. "</br>";
}

// second loop this loop will NOT echo any thing ?!
while ($row = $q->fetch(PDO::FETCH_ASSOC)) {
echo "<br/>" . $row['user_id'] . "--". $row['fname']. "</br>";
}

最佳答案

当你循环行时,你清空了结果集。如果您想多次循环,可以使用 fetchAll(),将其存储在一个变量中,然后使用 foreach 循环在您需要的地方循环。

$q = $dbconnection->prepare("SELECT * from users WHERE role=?");
$q->execute(array($id)); //Boolean true or false

$res = $q->fetchAll();

foreach ($res as $row) {
echo "<br/>" . $row['user_id'] . "--". $row['fname']. "</br>";
}

foreach ($res as $row) {
echo "<br/>" . $row['user_id'] . "--". $row['fname']. "</br>";
}

或者,您可以再次执行查询,但如果这样做,您将对数据库进行双重查询。因此,您为同一数据查询两次,效率不高。

您还有 execute(array('$id')),这将是确切的字符串 $id,而不是变量表示。参见 the PHP manual on strings .所以它应该是execute(array($id))

关于php - 为什么我不能遍历 $q->fetch() 两次?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46022982/

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