Php 使用or运算符选择语句

Php 使用or运算符选择语句,php,mysql,Php,Mysql,假设我有数据库行设置[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=$userna

假设我有数据库行
设置[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
所以我的问题是如何在select语句中使用

就像我想说的

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

感谢您的帮助

您需要使用一些括号来确保正确匹配相关用户名/密码对:

SELECT * 
FROM `settings` 
WHERE (user='$username' AND pass='$password') 
    or (sos='$username' and sos='$password')
但是,您确实需要使用参数化查询,因为上面的查询会受到SQL注入攻击。有关如何执行此操作的一些示例,请参见此处:

你可以这样做

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')

我想你需要括号

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

什么是sos?你怎么能让一个文件有两个不同的值呢?这只是一个简单的例子,然后我将把它应用到我的案例中:)~谢谢你的评论