使用PHP在数据库中显示尚未位于记录列表中的结果

时间:2014-02-08 15:38:56

标签: php mysql

我有这个查询显示网页中的所有结果。我担心的是如何查询数据库中不存在的内容?例如,如果数据库中没有数据,它将显示“没有记录”。这是我的代码。

<?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");
                }
              }

          ?>

2 个答案:

答案 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。)