2012-01-27 86 views
0

讓Select語句說,如果我的數據庫行settings [id,user,pass,sos]用或操作員

我有以下MySQL的聲明

$username$password可以是任何東西任何

$query = mysql_query ("SELECT * FROM `settings` WHERE user='$username' AND pass='$password'") 

我想說的

SELECT * FROM `settings` WHERE user='$username' AND pass='$password' or sos=$username and sos=$password 

所以我的問題是如何使用or select語句

現在我想中說

user='$username' 
pass='$password' 
or 
sos = both $username and $password 

感謝您的幫助

+1

什麼是sos?你怎麼能有一個提出2個不同的價值? – AJP 2012-01-27 19:43:59

+0

這只是一個簡單的例子,然後我將它應用於我的情況:)〜感謝您的評論 – 2012-01-27 19:55:17

回答

3

您需要使用一些支架,以確保您正確匹配有關的用戶名/密碼對:

SELECT * 
FROM `settings` 
WHERE (user='$username' AND pass='$password') 
    or (sos='$username' and sos='$password') 

但是,你真的需要使用參數化查詢與上面受到SQL注入攻擊。看到這裏就如何做到這一點的例子:

How can I prevent SQL injection in PHP?

1

你可以做

SELECT * 
FROM `settings` 
WHERE (user='$username' AND pass='$password') or (sos='$username' and sos='$password') 
1

你只需要一些括號組。我在第二組中添加了單引號,在那裏你最初錯過了它們。

SELECT * 
FROM `settings` 
WHERE 
    (user='$username' AND pass='$password') 
    OR (sos='$username' AND sos='$password') 
1

我想你需要括號

SELECT * FROM `settings` WHERE (user='$username' AND pass='$password') or (sos=$username and sos=$password) 
1

是否不喜歡這個工作完全?我會寫

WHERE (user = '$username' AND pass = '$password') 
OR ('$username' = '$password' AND sos = '$username');