在这个脚本中,我基本上想要在某个行记录与浏览器地址栏中的名称匹配时回显mysql表中的数据。但由于某种原因,没有数据得到回应。我的while循环不起作用的原因是什么?
$users = $_GET['username'];
$other_friend_query = mysql_query("SELECT * FROM friend WHERE RelatingUser='$users'");
$other_friend_assoc = mysql_fetch_assoc($other_friend_query);
while ($other_friend_assoc = mysql_fetch_assoc($other_friend_query)) {
$friend_related = $other_friend_assoc['RelatedUser'];
echo $friend_related;
}
答案 0 :(得分:3)
那是因为您在mysql_fetch_assoc
循环之前致电while
。当你调用它时,它会获取一个结果。然后当你进入循环时,已经获取了该结果。只需删除它,你就会好起来。如评论中所述,请停止使用mysql_
功能。下面的代码将转义您发布的变量并检查错误。使用列列表而不是SELECT *
也是更好的做法。
$users = mysql_real_escape_string($_GET['username']);
$other_friend_query = mysql_query("SELECT * FROM friend WHERE RelatingUser='$users'") or die( mysql_error() );
while( $other_friend_assoc = mysql_fetch_assoc($other_friend_query) ) {
$friend_related = $other_friend_assoc['RelatedUser'];
echo $friend_related;
}
答案 1 :(得分:1)
我的while循环不起作用的原因是什么?
可能不是唯一原因,但您正在跳过第一个结果。
// the following line is unused and therefore unnecessary
$other_friend_assoc = mysql_fetch_assoc($other_friend_query);
while ($other_friend_assoc = mysql_fetch_assoc($other_friend_query)) {