2009-06-10 6 views
1

こんにちはすべて、ちょっとした質問です(簡単な修正が必要です)。クエリのWHERE文で、複数のカラムを内部に持つ方法がありますか?ここに私のコードです:PHPのWHERE後の複数の列?

$sql="SELECT * FROM $tbl_name WHERE username='$myusername' and pwd='$pass'"; 

私は何をしたいこと(priv_level =「$のprivlevel」と呼ばれる)WHEREの後に別の列を追加することです。私はそれを行う方法についての構文がわからなかった。

ありがとうございました!読みやすくするためにラップ

+3

これはなぜ、これが悪い考えであり、安全に必要なものを行う方法なのか、この質問をご覧ください:http://stackoverflow.com/questions/60174/best-way-to-stop-sql-injection-in-php –

答えて

3

SQLを読んでください。しかし、とにかくそれを行うには、AND priv_level = '$privlevel'をSQLの最後に追加するだけです。

これはPHPを初めてお使いの方にとっては大きなステップになるかもしれませんが、mysqli class in PHPでもお読みください。これにより、より安全なクエリの実行が可能になります。

そうでない場合は、ここではより安全な方法です:サイドノートで

$sql='SELECT * FROM '.$tbl_name.' WHERE username=\''.$myusername.'\' and pwd=\''.$pass.'\' and priv_level=\''.$privlevel.'\''; 
+1

PDOはmysqliよりも優れています –

+0

私はPDOのことを聞いていなかったと言わなければなりません...しかし、もう一度、私がPHPを正しく使用したのは約4年前です。 =) – Blixt

0

$sql=" 
    SELECT * 
    FROM $tbl_name 
    WHERE username='$myusername' and pwd='$pass' and priv_level = '$privlevel' 
"; 

他の誰かが声明がいかに危険について警告します。 :-) SQL injectionと思ってください。

0
$sql="SELECT * FROM $tbl_name WHERE username='$myusername' and pwd='$pass' and priv_level = '$privlevel'"; 

は、あなたが「使用しないことを好む場合は、これを試して、あなたが表示されますどのようなここでやっていることはかなり悪い練習です。

0
$sql="SELECT * FROM $tbl_name WHERE username='$myusername' and pwd='$pass' AND priv_level = '$privlevel'"; 

$sql = "SELECT * FROM $tbl_name WHERE " . 
     "username = '" . mysql_real_escape_string($myusername) . "' AND " . 
     "pwd = '" . mysql_real_escape_string($pass) . "' AND " . 
     "priv_level = '" . mysql_real_escape_string($privlevel) . "'"; 
0

私はそう思います(注意してください)あなたのクエリがすでにWHERE句:)

SQLインジェクションの問題はさておきで複数の列を使用して、

$sql="SELECT * FROM $tbl_name WHERE username='$myusername' and pwd='$pass' and priv_level = '$privlevel'"; 
0

オム:uがWHERE句に(であってもよい)、それを追加する必要があります:あなたは簡単に次の2つを持っていない3を持つことができますので、

$sql="SELECT * FROM $tbl_name WHERE username='$myusername' and pwd='$pass' and priv_level='$privlevel'"; 
0

WHERE句はちょうど非常に終わりand priv_level='$priv_level'を追加し、チェックの任意の数をANDすることができます。

編集:@ thorarinの答えによると、これはSQLクエリを構築する危険な方法であり、パラメータバインディングはより安全です - しかし、これはWHERE句の2つの列と3つの列を使用することとは正反対です。

関連する問題