【问题标题】:While loop PHP get_result not working虽然循环PHP get_result不起作用
【发布时间】:2014-11-29 13:54:26
【问题描述】:

我正在尝试使用 MySQl 准备好的语句从数据库中获取行并获取结果。但是,这是行不通的。

请有人看看我哪里出错了?我已经尝试了几个小时的解决方案,但我无法让它发挥作用。页面只是没有加载,好像查询失败了。

 $tag = trim($_GET['tag']);

 $stmt = $mysqli->prepare('SELECT posts.* FROM tags JOIN posts ON posts.id = tags.post_id WHERE tag = ?');
 $stmt->bind_param('s', $tag);
 $stmt->execute();
 $stmt->store_result();
 $result = $stmt->get_result();

 while ($row = $result->fetch_assoc()) {

     echo $row['tag'];

 }      

 $stmt->free_result();
 $stmt->close();

【问题讨论】:

  • 您是否检查过您的查询是否有结果?
  • 是的,它返回 4 行

标签: php mysql loops while-loop


【解决方案1】:

试试这个:

$stmt = $mysqli->prepare('SELECT posts.id FROM tags JOIN posts ON posts.id = tags.post_id WHERE tag = ?');

...

$stmt->bind_result($id);    

while ($stmt->fetch()) {

    // var_dump entire row to ensure the key you expect is avail
    var_dump($id);

}

更新

如果您想选择 *,而不是单独指定每一列,请查看此 post(不是接受的答案,而是得分最高的答案)。否则,我强烈建议您查看PDO,因为它使这些基本的读取操作变得更加容易。

【讨论】:

  • 谢谢!我现在就试试
  • 注意更正,while循环中应该是$stmt,而不是$result
  • 查询现在确实返回结果。然而,var_dump 函数中没有任何结果
  • 好的,更正了代码,您正在使用 mysqli api,您应该认为它已弃用,并改用 PDO。请注意,在查询中您必须指定要选择的列,以便之后可以正确绑定结果。更多信息@us2.php.net/manual/en/mysqli-stmt.bind-result.php
  • 现在可以了,谢谢!有没有办法使用$stmt->get_result() 来实现这一点,尽管我需要搜索posts.* 来收集所有变量?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-12-03
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多