我的代码如下所示:
$result = mysql_query("SELECT * FROM `picdb` WHERE `picid` = '$picid' ") or trigger_error(mysql_error());
while($row = mysql_fetch_array($result)){
foreach($row AS $key => $value) { $row[$key] = stripslashes($value); }
问题是当没有要选择的行时,没有任何反应,我的$ row数组为空。
当没有行与select匹配时,如何使用此消息显示“no row found”?
答案 0 :(得分:17)
试
if (mysql_num_rows($result) == 0) {
// Show message
} else {
// do your while stuff here
}
答案 1 :(得分:8)
使用mysql_num_rows()
确定结果中的行数。
$result = mysql_query("SELECT * FROM `picdb` WHERE `picid` = '$picid' ") or trigger_error(mysql_error());
if(mysql_num_rows($result) == 0) {
echo "No row found!"
} else {
while($row = mysql_fetch_array($result)) {
foreach($row AS $key => $value) {
$row[$key] = stripslashes($value);
}
}
}
答案 2 :(得分:2)
if (mysql_num_rows($result) == 0) {
echo "Result is empty!";
}
您应该阅读mysql_query
的说明,它会给您答案:http://php.net/mysql_query
答案 3 :(得分:2)
mysql_num_rows()仅适用于缓冲查询。如果您可能有大/大的结果集,则可能会切换到unbuffered queries并且num_rows不再是一个选项。
您可以测试第一次调用mysql_fetch_array()的返回值。如果它是FALSE则没有匹配的记录。
<?php
$result = mysql_query("SELECT * FROM `picdb` WHERE `picid` = '$picid' ") or trigger_error(mysql_error());
$row = mysql_fetch_array($result, MYSQL_ASSOC);
if ( !$row ) {
echo '0 rows';
}
else {
do {
echo htmlspecialchars($row['x']), "<br />\n";
} while($row=mysql_fetch_array($result, MYSQL_ASSOC));
}
这个do {} while()的缺点是$ row = mysql_fetch ...代码已被复制。但它只是一个小的双峰。
答案 4 :(得分:0)
这种方法对我来说似乎永远不会失败。
if(!$result = mysqli_query($con,"SELECT * FROM `picdb` WHERE `picid` = '$picid' ")){
// Enter you error message here.
} else {
// Do all your magic.
}