2009-06-10 47 views
1

嘿所有,只是一個簡單的問題(應該是一個簡單的解決方案,我認爲)。在查詢中的WHERE語句中,是否有一種方法可以在其中包含多個列?這裏是我的代碼:PHP中的WHERE之後的多列?

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

我想要做的就是在WHERE(稱爲priv_level =「$ privlevel」)之後添加另一列。但我不確定如何做到這一點的語法。

感謝您的幫助!

+3

看到這個問題爲什麼這是一個糟糕的想法和方法來做你想要的東西安全:http://stackoverflow.com/questions/60174/best-way-to-stop-sql-injection-in-php – 2009-06-10 15:17:32

回答

3

閱讀SQL。但無論如何,只要在SQL的末尾添加AND priv_level = '$privlevel'即可。

如果您是PHP新手,這可能是一個非常大的步驟,但我認爲您也應該閱讀mysqli class in PHP。它允許更安全地執行查詢。

否則,這裏有一個更安全的方式:

$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) . "'"; 
+1

PDO甚至比mysqli更好 – 2009-06-10 15:28:28

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'"; 

如果您不想使用」,試試這個:

$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'"; 

在一個側面說明:你出現什麼要在這裏做是相當不好的做法。

0

我想喲u需要添加它(可能是AND)的WHERE子句:

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

嗯,你已經查詢的WHERE子句:)一旁

SQL注入的問題在使用多列(小心) :

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

WHERE子句可以AND任意數量的檢查,這樣你就可以很容易地有三個,你不能有兩個,只是在最後添加and priv_level='$priv_level'

編輯:as @ thorarin的回答提到,這是構建SQL查詢的一種冒險方式,參數綁定會更安全 - 但這與在WHERE子句中使用兩個vs三列正交。