用或操作员

问题描述:

让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

您需要使用一些支架,以确保您正确匹配有关的用户名/密码对:

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

但是,你真的需要使用参数化查询与上面受到SQL注入攻击。看到这里就如何做到这一点的例子:

How can I prevent SQL injection in PHP?

你可以做

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

你只需要一些括号组。我在第二组中添加了单引号,在那里你最初错过了它们。

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

使用括号:

我想你需要括号

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

是否不喜欢这个工作完全?我会写

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