检查MYSQL查询是否为空

时间:2016-05-17 04:43:54

标签: php mysql

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

$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>

但是,“如果”条件不起作用。制造这种情况的正确方法是什么。有人请帮助我!

5 个答案:

答案 0 :(得分:2)

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

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

修改

看看HERE

  

对于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))

答案 1 :(得分:2)

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

  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)表示查询未执行

答案 2 :(得分:1)

试,

    $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

答案 3 :(得分:1)

我假设你指的是

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

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

if (is_null($number_date))

话虽如此,我还要说DO NOT USE THE mysql_* API!这个API因为一些很好的理由而被弃用;请迁移您的代码以使用mysqliPDO。这两个API都提供了预备语句,这些语句(除其他外)提供了针对SQL injection attacks的保护措施。

答案 4 :(得分:1)

来自mysql_query()manual

  

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

因此,您的支票== 'NULL'是错误的。如果查询成功,函数将返回句柄,否则返回FALSE。您可以检查!== false是否找到了某些内容。此处与isset()empty()if (!$number_date)的任何其他答案也是正确的。

另请注意,PHP中的mysql扩展名已弃用。更好地使用其他扩展程序,例如mysqli or PDO