2012-03-01 33 views
1

我想檢查我的查詢是否爲空(沒有行)。什麼是最好的方法來攻擊它?在PHP中的Mysql空查詢 - 我得到什麼?資源ID?

而且我會得到什麼在下面的「$結果」和「$行」(這是怎麼了旨在解決這個 - if($result)也許使用if($row)意味着它不是空的什麼更好的建議

? 。

感謝

 $result = mysql_query("SELECT * FROM table1 WHERE column1= '$var1' 
           AND column2 IN ('no','nein','nope') 
           AND timestamp BETWEEN '$date' AND NOW()"); 
     $row = mysql_fetch_assoc($result);  

回答

2

測試這個。

$result = mysql_query("SELECT * FROM table1 WHERE column1= '$var1' 
          AND column2 IN ('no','nein','nope') 
          AND timestamp BETWEEN '$date' AND NOW()"); 
$row = mysql_fetch_array($result); 

if (mysql_num_rows($result) > 0) { 
    echo $row['column name']; 
} 
2

您可以使用mysql_num_rows($result)獲得的行數,或者你可以看到,如果$row === false;

$row將記錄或的第一行如果查詢沒有結果。 $result如果查詢成功爲false(如果它有錯誤)將成爲記錄集資源。

如果您在項目的早期階段和/或剛剛學習,請考慮切換到新的DB接口PDO。至少使用Mysqli ...你現在使用的mysql擴展有點過時了。它的工作原理,有時甚至在傳統應用程序/站點中都需要它,但如果可能的話應該避免。

+0

哪個擴展你說的是過時的?我不確定我明白。 – 2012-03-04 21:57:02

+0

['ext \ mysql'](http://php.net/manual/en/book.mysql.php)已過時,這是您在初始文章中使用的。 [這可能會幫助你理解](http://forge.mysql.com/wiki/Which_PHP_Driver_for_MySQL_should_I_use)。應該注意的是,該文檔在其推薦中將'mysqli'放在'PDO'上,因爲'mysqli'支持PDO不支持的一些MySQL特有功能。然而,我更重視統一的API PDO提供跨不同的數據庫和編寫DB不可知的代碼。我也發現PDO API更容易處理。 – prodigitalson 2012-03-04 22:36:00

1

使用mysql_num_rows來獲得行數。

如果您的查詢沒有失敗,$ result的結果將始終爲Resource類型。