[英]Echo something when no rows are found in SQL While loop
我有一個循環遍歷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根本不執行。
編輯:我知道我應該使用mysqli或類似的
首先,你應該停止使用mysql_
函數,因為它們被描述,並開始使用mysqli_
functions, MySQLi
類或PDO
。
要回答你的問題,有mysql_num_rows
函數,它返回語句返回的行數:
$stmt = mysql_query("SELECT .......etc");
if (!mysql_num_rows($stmt)) {
echo "Nothing found";
} else {
while (/*...*/) {
}
}
有關更多信息,請參閱此處 : 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循環之外移動它。
您遇到的問題是,如果沒有返回結果,則根本不執行循環。
考慮使用顯式標志,這使代碼更容易閱讀:
<?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
包。
使用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
}
PHP 7中不再支持PS mysql_*
擴展。您應該考慮使用mysqli_*
。
$qry = mysql_query("SELECT .......etc");
if(mysql_num_rows($qry)>0){
while ( $row1 = mysql_fetch_array($qry)) {
echo " found";
}
}else{
echo "Nothing found";
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.