我想简单地使用带有php的while循环来显示某些内容,但它无效。
这是代码 -
<?php
mysqli_select_db($connect,"users");
$select_title = "select title, message from messages where user = '$u' LIMIT 4 ";
$querying = mysqli_query($connect,$select_title) or die ('Whops! Something went wrong.');
$line = mysqli_fetch_assoc($querying);
//$title = mysqli_real_escape_string($connect,trim($line['title']));
while(($rows = mysqli_fetch_assoc($querying)))
{
echo $rows['title'];
}
&GT;
现在我有两个标题,但只显示了一个。为什么这样?
答案 0 :(得分:6)
你在这里取了一行:
$line = mysqli_fetch_assoc($querying);
光标将移动到下一行,因此
while(($rows = mysqli_fetch_assoc($querying)))
{
echo $rows['title'];
}
仅显示第二行。
最好的解决方案就是评论该行:
//$line = mysqli_fetch_assoc($querying);
答案 1 :(得分:1)
删除此行:
$line = mysqli_fetch_assoc($querying);
答案 2 :(得分:1)
评论此行将解决您的问题
//$line = mysqli_fetch_assoc($querying);
答案 3 :(得分:1)
...因为您使用第$line = mysqli_fetch_assoc($querying);
行获取第一个标题但从未回显它,然后开始循环以浏览其余标题。
删除/取消注释该行,你应该没问题。
答案 4 :(得分:0)
您已经使用
获取一条记录$line = mysqli_fetch_assoc($querying);
所以只剩下一个
答案 5 :(得分:0)
我的MySQL有点生疏(很久以前因为我使用了SQL =&gt;移动到NoSQL阵营......),但这就是我要做的事情:
但我猜这个问题是正确的,因为很多人都在说
$line = mysqli_fetch_assoc($querying);
已经取了一行。但是你仍然可以将它用于调试目的。
另外我想指出你应该PDO而不是mysqli(我猜几乎不赞成)。 PDO准备好的语句还可以保护您免受SQL注入的影响,并且可以更快,因为它是预编译的。
答案 6 :(得分:0)
每次拨打mysqli_fetch_assoc()
时,您都会从结果集中“获取”一条记录。当没有更多记录时,mysqli_fetch_assoc()
返回false。顺便说一句,这是你可以使用while
循环的原因。
当您调用$line = mysqli_fetch_assoc($querying);
时,您从结果集中获取了一条记录,结果集中只留下了1条记录。所以你的while
循环只迭代这一条记录。正如其他人所指出的那样 - 你只需要对该行进行评论。
我还建议使用mysqli_fetch_all()
function,这将为您提供一个可以使用的普通数组,就像普通数组一样
$results = mysqli_fetch_all($querying, MYSQLI_ASSOC);