2013-04-02 42 views
0

有人告訴我,我可以檢查一個SELECT語句是否發現一列的語法SELECT ... INTO瞭解其行爲

$rows = query("SELECT * FROM tbl WHERE id = idx"); 
if ($rows == false) 

,它似乎工作。

無論如何,如果我檢查if ($rows == 0)它不會返回相同的值。

不應該0false是相同的(除了類型,當然)?

當查詢沒有找到行時,查詢返回的實際值是什麼?我問,因爲它似乎並不假,因爲該聲明var_dump($rows === false)打印false ..

***編輯:我很抱歉傢伙,查詢()是一個函數從別人寫的圖書館,我有不知道(我現在開始與SQL ...)。它只是執行一條SQL語句,返回結果集中所有行的數組,或者返回(非致命)錯誤(如未找到的行)的false。

雖然我仍然有一個小問題。 該函數發現沒有行時返回false,所以我不能用if ($rows === false)來捕獲該函數嗎?

爲什麼var_dump(false) doens't打印出我什麼,而var_dump(true)打印出我1

+0

你是指'mysql_query()'而不是'query()'? –

+0

你確定你不想關閉字符串嗎? – hjpotter92

+0

@ hjpotter92編輯。 – doplumi

回答

1

我不太確定您是否使用簡單的mysql_*函數,MySQLi或PDO,但在任何情況下$rows都不會返回結果行的數量。它是根據查詢成功返回/創建的布爾值/對象。

$sql = $mysqli->query("SELECT * FROM tbl WHERE id='1'"); 
if(!$sql->error) 
    $number_of_rows = $sql->num_rows; // for sure it will output 1