2011-02-09 31 views
0

說法有沒有辦法做一個if聲明是這樣的:PHP如果用MySQL查詢

if ($password == mysql_query("SELECT password from member WHERE id = $id")) { 

// f00 

} 

所以,我的意思是,如果它是可能的和/或好的做法有一個簡短的查詢中您的if,而不是先從數據庫中提取它。

謝謝!

+0

你可能會想,不這樣做。如果mysql_query失敗怎麼辦?然後會發生什麼?我會在if語句之上移動查詢執行。 – 2011-02-09 22:49:53

+2

你有代碼,改變'一個SQL注入孔WHERE ID = $ id爲 「``到WHERE ID = '$ ID'」`*(注意周圍`$ id`單引號,否則`mysql_real_escape_string()`不會保護你 – Johan 2011-05-28 19:34:29

回答

1

mysql_query返回一個資源,所以它不會工作

0

我不會推薦它。如果SQL中存在錯誤,如果無法連接到服務器,如果沒有返回行,或者存在任何其他錯誤,那麼您會遇到一些重大問題。

0

確定這是可能的,但它不是一個好主意。

考慮一下,如果你喜歡adodb

使用數據庫抽象層,而不是基本php_mysql的,你可以輕鬆擁有:

if($password == $DB->GetOne('Select password from member where id = '.$ID)){ 
     //do something 
    } 

但是,如果查詢失敗或以其他方式退還任何你含蓄希望你能有無法預料的錯誤。

您應該封裝數據庫輸出和數據庫查詢,以便如果失敗,它們會優雅地失敗,並且沒有奇怪的副作用,這可能是後續追蹤的一個難題。