检查MYSQL查询是否为null


Check whether a MYSQL Query is null

我想根据查询是否为null来设置if条件,并打印两个不同的表。以下是我的代码。

$number_of_date= "SELECT SUM(number_of_date) AS number_of_date
                    FROM emp_leaves
                    WHERE emp_id='$userID'
                      AND leave_category='Annual'
                      AND apply_year='$year'";
$number_date = mysql_query ($number_of_date);
if (($number_date == 'NULL'))
{
    $result2 = "SELECT * FROM leave_info
                  WHERE employment_type='permanent'
                    AND leave_type='annual'";
    $sql2 = mysql_query ($result2);
    while($row = mysql_fetch_array($sql2)) {
       ?>
    <tr>
      <td><?php echo $row["leave_type"]?></td>
      <td><?php echo $row["leave_count"]?></td>
      </td></tr><?php }
}
else
{
    $sql = "SELECT * FROM emp_leaves
              WHERE emp_id='$userID'
                AND leave_category='Annual'
              ORDER BY leave_id DESC limit 1";
    $result = mysql_query ($sql);
    while($row = mysql_fetch_array($result)) {
    ?>
    <tr>
        <td><?php echo $row["leave_category"]?></td>
        <?php }?><?php
    while($row11 = mysql_fetch_array($number_date)) {
            ?>
            <td><?php echo $row11["number_of_date"]?></td><?php } } ?>
    </tr>

但是,"如果"条件不起作用。产生这种状况的正确方法是什么。任何人都请帮帮我!

您可以使用isset()或empty()php函数。

if(isset($number_date))if(empty($number_date))

编辑

看看这里

对于SELECT、SHOW、DESCRIBE、EXPLAIN和其他返回结果集的语句,mysql_query()在成功时返回资源,在错误时返回FALSE。

对于其他类型的SQL语句,INSERT、UPDATE、DELETE、DROP等,mysql_query()在成功时返回TRUE,在错误时返回FALSE。

所以请试试这个。

if (mysql_query ($number_of_date))或在您的代码中这样编辑。

if (($number_date == true))

检查查询执行或结果是否没有行

  if (!$number_date or count($number_date) < 1){
      if(mysql_error()){
          die('Invalid query: ' . mysql_error());
        }
    }

mysql_query($sql)执行查询并返回结果,我们需要检查查询是否执行,如果条件if($number_date)表示查询已执行,if(!$number_date)表示查询未执行

try,

    $number_of_date= "SELECT SUM(number_of_date) AS number_of_date
                      FROM   emp_leaves
                      WHERE  emp_id='$userID' AND
                             leave_category='Annual' AND
                             apply_year='$year'";
    $res_qry     = mysql_query($number_of_date) 
                  or 
                  die ('Invalid query :: <br/>'.$number_of_date.
                                       ' <br/>'.mysql_error());
    $rowqry      = mysql_fetch_assoc($res_qry);
    $number_date = $rowqry ['number_of_date'];

现在使用,$number_date

    if (($number_date == '') || empty($number_date))

如果查询返回NULL,通常PHP会将其视为空。。

您也可以尝试is_null()

请注意,不推荐使用mysql函数。请改用MySQLi或PDO。有以下查询中的引用。

http://php.net/manual/en/book.mysqli.php

http://php.net/manual/en/book.pdo.php

我想你指的是行

if (($number_date == 'NULL'))

这将不起作用,因为您将变量$number_date字符串'NULL'进行比较,而不是与NULL值进行比较。为了测试mysql_query ($number_of_date)是否返回NULL,您需要使用函数is_null()作为

if (is_null($number_date))

话虽如此,我还要说不要使用mysql_*API由于许多非常好的原因,此API已被弃用;请迁移您的代码以使用mysqliPDO。这两个API都提供了准备好的语句,这些语句(除其他外)提供了针对SQL注入攻击的保护措施。

来自mysql_query()手册:

对于SELECT、SHOW、DESCRIBE、EXPLAIN和其他返回结果集的语句,mysql_query()在成功时返回资源,在错误时返回FALSE。

所以你的支票== 'NULL'是错的。如果查询成功,函数将返回handle,否则返回FALSE。你可以检查!== false是否发现了什么。这里用isset()empty()if (!$number_date)的任何其他答案也是正确的。

另外,请注意,PHP中的mysql扩展是不推荐使用的。最好使用其他扩展,如mysqli或PDO。