我刚刚回到我的大型网站项目,所以在我的php和mySQL学习中倒退了一步。我为该网站创建了一些搜索引擎。当它没有任何显示内容时,我很难让它显示“找不到结果”。出于某种原因,我无法察觉。它是包含多少条记录的$ rows变量。即使显示它显示为“0”,它似乎也不会在for循环中的if语句中被视为如此。当我做了var_dump时,它说int(0)。我做错了什么?
$result=query($qstring, $db_hostname, $db_username, $db_password, $db_database);
$rows = mysql_num_rows($result);
echo 'Results found '.$rows;
for ($j = 0 ; $j < $rows ; ++$j)
{
$row = mysql_fetch_row($result);
if ($rows==0)
{
echo 'No results found';
}
else
{
display_result($row[0],$row[1],$row[3],$row[4],$row[5]);
}
}
答案 0 :(得分:0)
由于$ rows为0,因此不会输入您的for循环,因此永远不会到达if块。如果您将for循环更改为while循环,它将自行遍历您的结果,而无需检查$ rows。
尝试这种方法:
while($row = mysqli_fetch_row($result){
// do stuff
}
你应该切换到mysqli。它完全兼容。您基本上只需在代码中添加“i”。
答案 1 :(得分:0)
代码中的修复:
$result=query($qstring, $db_hostname, $db_username, $db_password, $db_database);
$rows = mysql_num_rows($result);
if($rows>0)
{
echo 'Results found '.$rows;
for ($j = 0 ; $j < $rows ; ++$j)
{
$r= mysql_fetch_row($result);
display_result($r[0],$r[1],$r[3],$r[4],$r[5]);
}
}
else
{
echo "No results found";
}
你也可以尝试这个
$result=query($qstring, $db_hostname, $db_username, $db_password, $db_database);
$rows = mysql_num_rows($result);
if($rows>0)
{
echo 'Results found '.$rows;
while ($r= mysql_fetch_row($result))
{
display_result($r[0],$r[1],$r[3],$r[4],$r[5]);
}
}
else
{
echo "No results found";
}
答案 2 :(得分:0)
看看你的循环。您说$rows
是int(0)
。循环做什么?它生成$j=0
,然后继续循环,直到条件$j < $rows
为假。除了...嘿,条件总是假的,所以它永远不会循环。
for ($j = 0 ; $j < $rows ; ++$j)
{
#...
}
要解决此问题,请检查循环外是否存在结果。