2016-05-17 54 views
1

我想根據查詢是否爲null來判斷條件,並打印兩個不同的表。以下是我的代碼。檢查一個MYSQL查詢是否爲空

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

但是,「如果」條件不起作用。做出這種狀況的正確方法是什麼?任何人都請幫助我!

+0

我已更新ans請檢查 –

回答

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

+0

嘗試在答案中調試查詢併發布結果。在< echo >這兩種情況下保持調試點並嘗試調試它。 – Hytool

+0

謝謝你,現在從這種方式很好, – Chathurika

2

可以使用isset()empty() PHP函數。

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

編輯

看看HERE

對於SELECT,SHOW,描述,解釋等語句返回的結果集,請求mysql_query()成功返回的資源或錯誤時爲FALSE。

對於其他類型的SQL語句,INSERT,UPDATE,DELETE,DROP等,mysql_query()在成功時返回TRUE或在錯誤時返回FALSE。

所以請試試這個。

if (mysql_query ($number_of_date))或者在你的代碼中編輯這樣。

if (($number_date == true))

+0

我也試過這種方式,但沒有工作 – Chathurika

+0

你得到的任何錯誤? – Archish

+0

沒有任何錯誤,但條件無法正常工作 – Chathurika

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)表示查詢未執行

+0

好,但只有在條件總是不執行時,才執行else語句, – Chathurika

+0

只有在執行查詢時執行else語句並且結果超過1行如果您只想檢查執行的查詢還是不執行查詢,則count = $ number_date)<1' –

+0

@Chathurika你可以解釋我的意思是「查詢爲空」意味着返回結果沒有值? –

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 THEmysql_*API!此API已被棄用了一些很好的理由;請遷移您的代碼以使用mysqliPDO。這兩種API都提供了準備好的語句,這些語句(除其他外)提供了針對SQL injection attacks的保護措施。

1

從的mysql_query()manual

對於SELECT,SHOW,描述,解釋等語句返回的結果集,請求mysql_query()成功返回的資源,或者在錯誤FALSE。

因此您的支票== 'NULL'是錯誤的。如果查詢成功,函數將返回句柄,否則返回FALSE。您可以檢查!== false是否被發現。任何其他答案在這裏與isset(),empty()if (!$number_date)也是正確的。

此外,請注意PHP中的mysql擴展是已棄用。最好使用其他擴展名,如mysqli or PDO