我有这个查询显示网页中的所有结果。我担心的是如何查询数据库中不存在的内容?例如,如果数据库中没有数据,它将显示“没有记录”。这是我的代码。
<?php
require("script/connect.php");
$sql = "SELECT
COUNT(*)as num
FROM
users_tbl ";
$res12 = mysql_query($sql);
$id = $_GET['id'];
$sql = "SELECT
teachers_tbl.id,
teachers_tbl.teachers_name,
users_tbl.teachers_id,
users_tbl.A1,
users_tbl.A2,
users_tbl.A3,
users_tbl.A4,
users_tbl.A5,
users_tbl.A6,
users_tbl.A7,
users_tbl.A8,
users_tbl.A9,
users_tbl.A10,
users_tbl.B1,
users_tbl.B2,
users_tbl.B3,
users_tbl.B4,
users_tbl.B5,
users_tbl.B6,
users_tbl.B7,
users_tbl.B8,
users_tbl.B9,
users_tbl.B10,
users_tbl.C1,
users_tbl.C2,
users_tbl.C3,
users_tbl.C4,
users_tbl.comments
FROM
teachers_tbl
INNER JOIN users_tbl ON users_tbl.teachers_id = teachers_tbl.id
WHERE teachers_tbl.id = '$id'";
$res = mysql_query($sql);
while($row = mysql_fetch_array($res)){
if(mysql_num_rows(mysql_query($sql)) != NULL){
echo "<p style='text-align:center; color:red;'>NO RECORDS YET.</p>";
}else{
echo "RESULT PAGE FOR - ".$row['teachers_name']."";
include("script/result.php");
}
}
?>
答案 0 :(得分:0)
将您的php代码重写为mysql_num_rows()
- 获取结果中的行数
if(mysql_num_rows($res)==0){
echo "<p style='text-align:center; color:red;'>NO RECORDS YET.</p>";
}else{
while($row = mysql_fetch_array($res)){
echo "RESULT PAGE FOR - ".$row['teachers_name']."";
}
}
原因,While循环仅在查询有数据时执行,从while循环内移出mysql_num_rows,你可以检查条件。
注意:使用mysqli_ *或PDO函数而不是使用mysql_ *函数(不建议使用)
答案 1 :(得分:0)
当我需要这样做时,我使用如下代码模式:
$res = mysql_query($sql);
$rowcount = 0;
while($row = mysql_fetch_array($res)){
if ( /* some condition checking whether the present row is valid */) {
$rowcount++;
echo "RESULT PAGE FOR - ".$row['teachers_name']."";
include("script/result.php");
}
}
if ( 0 == $rowcount ) {
echo "<p style='text-align:center; color:red;'>NO RECORDS YET.</p>";
}
这有三个原因。首先,有效的结果集可以是空结果集(无行)。第二,看起来你的结果集中的行会有些不完整,你需要使用PHP来检查这个条件。最后,mysql_num_rows()
和相关的行计数函数并不总是适用于所有系统,尤其是在获取结果集的第一行之前;我养成了不信任他们的习惯,只是自己计算行数。
(我会让别人讨厌你转换成mysqli或pdo。)