2014-11-06 27 views
1

我有一個簡單的行數在PHP中。 當沒有行被發現時,我需要$ sfideRicevute爲'0',但是這個查詢沒有返回任何東西。MYSQL的行數是NULL,但我需要顯示0

PHP:

<?php 
    $sql = "SELECT * FROM `match` WHERE show_id = $showid AND w02 = $id AND status = 'sfida'"; 

    if ($result = mysql_query ("$sql")){ 
     while ($row=mysql_fetch_array ($result)) { 

?> 
<? $sfideRicevute = mysql_num_rows($result); ?> 
<? echo $sfideRicevute; ?> 

感謝您的幫助

+1

由於您的用戶參數沒有[正確轉義](http://bobby-tables.com/php),所以這看起來恐怖不安全。您應該**絕不**將'$ _POST'數據直接放入查詢中。這造成了一個巨大的[SQL注入漏洞](http://bobby-tables.com/)。另外,'mysql_query'是一個過時的接口,不應該被使用,它將被從PHP中刪除。像[PDO這樣的現代化替代品並不難學](http://net.tutsplus.com/tutorials/php/why-you-should-be-using-phps-pdo-for-database-access/)。像[PHP The Right Way](http://www.phptherightway.com/)這樣的指南解釋了最佳實踐。 – tadman 2014-11-06 21:23:54

+0

考慮到你沒有測試錯誤,誰知道這裏可能會出現什麼問題。如果使用正確,PDO將引發異常,如果存在任何問題,您不會錯過任何錯誤。 – tadman 2014-11-06 21:24:40

回答

1

您可以檢查,看看有什麼$ sfideRicevute的價值,如果它是零,顯示爲0。

echo $sfideRicevute == null ? 0 : $sfideRicevute; 
2
echo intval($sfideRicevute); 

echo (int) $sfideRicevute 

兩者都將該值轉換爲整數0.在php'0'中,false,0,null將全部以這種方式轉換爲int 0。

1,真正的和其他數字將保持其價值不過,我不知道這是明確的時候了:)

請檢查http://php.net/manual/en/language.types.type-juggling.php以獲取更多信息。

2

從PHP文檔什麼mysql_num_rows回報:

行的結果集或FALSE的成功失敗的次數。

它應該返回0,如果不是,則可能有錯誤的查詢。

另外請注意,使用這些mysql_函數不推薦,因爲它們將被從PHP刪除,請參閱http://nl3.php.net/manual/en/faq.databases.php#faq.databases.mysql.deprecated

二:你有沒有想過SQL注射,你直接把一個變量到查詢對於上面鏈接中提到的替代方案,這也不被推薦和不必要。

+0

即使查詢執行失敗,我也不同意。用戶反饋應該是0行或類似沒有結果。例如,如果數據庫處於脫機狀態,mysql_num_rows也將爲false。此外,提高SQL注入的道具。 – Digitalis 2014-11-06 21:28:25

+0

你究竟有什麼不同意見? :) – Arie 2014-11-06 21:32:05