而循环PHP get_结果不起作用

而循环PHP get_结果不起作用,php,mysql,loops,while-loop,Php,Mysql,Loops,While Loop,我试图使用MySQl准备的语句从数据库中获取行,并获取结果。然而,这是行不通的 有人能看出我哪里出了问题吗?我已经尝试了几个小时的解决方案,但我无法让它发挥作用。页面不会像查询失败一样加载 $tag = trim($_GET['tag']); $stmt = $mysqli->prepare('SELECT posts.* FROM tags JOIN posts ON posts.id = tags.post_id WHERE tag = ?'); $stmt->bind_

我试图使用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();
试试这个:

$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);

}
Upate


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

您是否检查过您的查询是否得到结果?是的,它返回4行!我将立即尝试,请注意更正,应该是while循环中的
$stmt
,而不是
$result
查询现在确实返回结果。但是,在<代码> VARYDUPP> <代码>函数OK,纠正代码中,没有使用MySqLAPI,您应该把它看作是弃用的,而使用PDO来代替。请注意,在查询中,您必须指定要选择的列,以便在查询后正确绑定结果。更多信息@现在有用了,谢谢!如果我需要搜索
帖子。*
来收集所有变量,是否有办法通过
$stmt->get_result()
实现这一点?