我有一个循环遍历sql数据库中的所有行。在循环内部我打印行的内容,但是当查询返回0行时,该循环内的代码不会被执行。如果没有找到行,如何让它运行一些代码?
示例:
$qry = mysql_query("SELECT .......etc");
while ( $row1 = mysql_fetch_array($qry)) {
if (empty($row1)) {
echo "Nothing found";
} else {
echo "Found something";
}
}
我遇到的问题是,当while返回任何内容时,if isn不会被执行。
编辑:我知道我应该使用mysqli或类似的
答案 0 :(得分:3)
首先,您应停止使用mysql_
功能,因为它们已被停用,并开始使用mysqli_
个功能,MySQLi
类或PDO
。
要回答你的问题,有mysql_num_rows
函数返回语句返回的行数:
$stmt = mysql_query("SELECT .......etc");
if (!mysql_num_rows($stmt)) {
echo "Nothing found";
} else {
while (/*...*/) {
}
}
答案 1 :(得分:0)
有关详情,请参阅此处:http://php.net/manual/en/mysqli-result.num-rows.php
$qry = mysql_query("SELECT .......etc");
if (mysqli_num_rows($qry) === 0) {
echo "Nothing found";
} else {
while ( $row1 = mysql_fetch_array($qry)) {
echo "Found something";
}
}
它会回应"找到一些东西"多次,每行一次。如果你不想这样,你也必须将它移到while循环之外。
答案 2 :(得分:0)
你遇到的问题是,如果没有返回结果,你的循环根本就不会被执行。
考虑使用显式标志,这使代码更容易阅读:
<?php
$qry = mysql_query("SELECT .......etc");
$resultWasEmpty = true;
while ($row = mysql_fetch_array($qry)) {
$resultWasEmpty = false;
// do whatever you want to do with $row
}
if ($resultWasEmpty) {
echo "Nothing found";
}
或者,您只需使用函数返回结果集中的行数:mysql_num_rows($qry)
...
除了一般的警告:
您正在使用旧的,过时的和已弃用的mysql
扩展程序。您应该切换到当前的mysqli
扩展程序或PDO
程序包。
答案 3 :(得分:0)
使用mysql_num_rows
功能。
$qry = mysql_query("SELECT .......etc");
if( mysql_num_rows($qry) > 0 ) {
while ( $row1 = mysql_fetch_array($qry)) {
// do something with the record
}
} else {
// no record found in database
}
P.S。 PHP 7不再支持mysql_*
扩展。您应该考虑使用mysqli_*
。
答案 4 :(得分:0)
$qry = mysql_query("SELECT .......etc");
if(mysql_num_rows($qry)>0){
while ( $row1 = mysql_fetch_array($qry)) {
echo " found";
}
}else{
echo "Nothing found";
}