当前位置: 首页 > 面试题库 >

在PDO结果中重置数组指针

何楷
2023-03-14
问题内容

我无法从MySQL SELECT方法转换为PDO方法。我要遍历两次提取的数组,两次都从零行开始。在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
}


 类似资料:
  • 问题内容: 阅读完SQL注入攻击后,我只是在编辑搜索脚本。我正在尝试使用PDO而不是常规的mysql连接从脚本中获得相同的功能。因此,我一直在阅读有关PDO的其他文章,但不确定。这两个脚本会提供相同的功能吗? 使用PDO: 使用常规mysql: 我继续使用常规示例 从数据库创建匹配结果数组。我该如何使用PDO? 问题答案: 看一下方法。您也可以在迭代器模式中使用。 来自PHP文档的的代码示例: 结

  • 我调用了一些JSON结果,它在一个名为“cast”的数组中列出了一组参与者。我用这个JS调用列表中的第一项。。。 把它们放在一个小隔间里,像这样。。。 我需要列出前5个结果(不仅仅是第一个)。他们的方法简单吗?

  • 问题内容: 我的问题是 我尝试在两个都有id字段的表之间做一个简单的JOIN。我的结果是一个stdClass对象,因为我使用的是PDO。有谁知道我该如何区分第一个表的ID和第二个表的ID? 代码 如果我尝试使用$ products-> id,它将显示 类别 表的ID 。如果它是一个数组,则可以使用$ products [‘p.id’],我需要一个替代方法。 非常感谢。 问题答案: 您必须为一个表或

  • 问题内容: 我知道它不需要两次获取数据。但是我的主要问题是如何在PDO中重置光标位置? 问题答案: AFAIK无法使用PDO重置光标位置-这可能与某些数据库的兼容性有关,这些数据库不支持重置内部光标。 如果要对结果进行两次迭代,请将其提取到数组并在此数组上进行迭代: 编辑 某些数据库支持可滚动游标。要使用该标记,请向方法添加标记(请参见PDOFetch文档页面上的示例)。但这只会增加前进或后退的可

  • 问题内容: 拜托,有人能告诉我我在做什么错吗?我只是从表中检索结果,然后将它们添加到数组中。一切正常,直到我检查结果为空为止。 这将获得匹配项,将其添加到我的数组中,并按预期回显结果: 当我尝试检查空结果时,我的代码返回“空”,但不再产生匹配结果: 与往常一样,我们将提供任何帮助。谢谢! 问题答案: 您这样做时会丢掉结果行。那不是您检查是否有任何结果的方法。你做 相关文档在这里:http : //

  • 我需要获取数据库中的所有记录作为数组使用在教义中,我的查询是这样的 即使将水合模式设置为,我也会将结果作为对象 我犯了什么错误?