我在整天编程后深夜画了一个空白,也许其他人可以帮助阐明我的问题所在。我正在尝试在PHP中进行MySQL查询,它使用AND和OR基于多个变量获取正确的字段。
以下是我正在尝试做的不起作用:
$result = mysql_query("SELECT * FROM tableName
WHERE key = '$key' ((userFrom = '$userFrom' AND userTo = '$userTo')
OR (userFrom = '$userTo' AND userTo = '$userFrom')");
基本上在英语中它的作用是它需要知道Key值。一旦它与键值匹配,那么我需要具有该键值的所有行也是 - 或者是相同的用户 - 将其视为两个人之间的对话,它必须有他们的对话主题(键)和两个参与者(来自和)。
有什么建议吗?
答案 0 :(得分:2)
对我来说,看起来像三个开放的parens和两个关闭的parens。遗失的一个是在收盘双引号之前。 (另外,当然,其他人提到的缺失和。)
当然,用户名中嵌入的各种字符(如果允许)将使命令以特定于数据的方式失败。出于这个原因,为了避免SQL注入攻击,请切换到参数化查询。
答案 1 :(得分:0)
我认为这只是一个让括号成为正确方法的问题。试试这个:
$result = mysql_query("SELECT * FROM tableName
WHERE key = '$key' **AND**
((userFrom = '$userFrom' AND userTo = '$userTo') OR
(userFrom = '$userTo' AND userTo = '$userFrom')");
或者也许:
$result = mysql_query("SELECT * FROM tableName
WHERE ((key = '$key') AND
((userFrom = '$userFrom' AND userTo = '$userTo') OR
(userFrom = '$userTo' AND userTo = '$userFrom'))");
我认为如果你摆弄那些你会得到你想要的东西。