2011-02-09 7 views
0

との文は、このようなif文を実行する方法がある場合:PHP MySQLのクエリ

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

// f00 

} 

だから私は何を意味するかですが、短いクエリを持つことが可能かつ/またはグッドプラクティスである場合ifをDBから最初に抽出するのではなく、

ありがとうございます!

+0

あなたは、そのようにしないでください。 mysql_queryが失敗したらどうしますか?その後何が起こるのですか?私はクエリ実行をif文の上に移動します。 –

+2

あなたはそのコードにSQLインジェクションの穴があり、 'WHERE id = $ id"を 'WHERE id = '$ id'" '' *( '$ id'の周りに一重引用符で囲んでください。そうでなければ' mysql_real_escape_string – Johan

+1

[PDO]を使用している人がいない理由(http://net.tutsplus.com/tutorials/php/why-you-should-be-using-phps-pdo-for-database-access/ ) – tadman

答えて

1

mysql_queryがリソースを返すので、それは動作しません。

+0

をチェックしてください。彼は、彼が何をしているのかを実現する同様の単一ステートメントがあるのか​​疑問に思っています。 – bjornars

+0

彼がそれを知っていたことに基づいて、私には分かりませんでした。他の答えを見て\コメント、私は唯一の人でもありません。 –

0

私はそれをお勧めしません。 SQLにエラーがある場合、サーバーに接続できない場合、返された行がない場合、またはその他のエラーがある場合は大きな問題があります。

0

確かに可能ですが、それは良い考えではありません。

あなたはadodb

のような代わりに、基本的なphp_mysqlのデータベース抽象化レイヤを使用していた場合は、簡単に持っている可能性が考えてみましょう:

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

しかし、クエリが失敗したか、そうでなければ、暗黙のうちにあなたの可能性が期待されたものを返した場合予期せぬ間違いがある。

データベースの出力とデータベースのクエリをカプセル化して、失敗した場合、正常に失敗し、後で追跡する厄介な副作用がないようにする必要があります。