gpt4 book ai didi

php - 重置 PDO 结果中的数组指针

转载 作者:IT老高 更新时间:2023-10-28 23:52:29 24 4
gpt4 key购买 nike

我在从 MySQL SELECT 方法迁移到 PDO 方法时遇到了麻烦。我想遍历一个获取的数组两次,两次都从第 0 行开始。在 MySQL 中我会使用:

mysql_data_seek($result,0);

使用 PDO 方法,我不确定如何完成同样的事情。下面的代码是我试图做到这一点的方式。第一个 while 循环运行良好,但第二个 while 循环不返回任何内容。

$pdo = new PDO('mysql:host=' . $host . ';dbname='.$database, $username, $password);
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

$stmt = $pdo->prepare('SELECT * FROM mytable WHERE active = 1 ORDER BY name ASC');
$stmt->setFetchMode(PDO::FETCH_ASSOC);
$stmt->execute();

while($row = $stmt->fetch())
{
//do something starting with row[0]
}
while($row = $stmt->fetch())
{
//do something else starting with row[0]
}

最佳答案

将结果保存到一个数组中,然后将该数组循环两次。

$pdo = new PDO('mysql:host=' . $host . ';dbname='.$database, $username, $password);
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

$stmt = $pdo->prepare('SELECT * FROM mytable WHERE active = 1 ORDER BY name ASC');
$stmt->setFetchMode(PDO::FETCH_ASSOC);
$stmt->execute();

$rows = $stmt->fetchAll();

foreach ($rows as $r) {
// first run
}

foreach ($rows as $r) {
// seconds run
}

关于php - 重置 PDO 结果中的数组指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9437214/

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