使用WHERE的SQL语法错误

时间:2015-11-28 01:18:58

标签: php mysql sql where

我正在为我的网站创建一个消息系统,我正在尝试展示你的朋友,我遇到了麻烦,因为我收到了错误:

Select Friend: Invalid query: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'SELECT `user_two` FROM `friends` WHERE (`user_one`='2')' at line 1

继承人我的PHP代码:

mysql_connect("************", "*****", "**********");
mysql_select_db("******");

if(isset($_GET['user']) && !empty($_GET['user'])){
   echo "Send Message To " . getuser($_GET['user'], 'first_name');
} else {
   echo "Select Friend: ";
$my_id = $_SESSION['user_id'];
$friend_list = mysql_query("SELECT `user_one` FROM `friends` WHERE (`user_two`='$my_id') OR SELECT `user_two` FROM `friends` WHERE (`user_one`='$my_id')");
if (!$friend_list) { // add this check.
      die('Invalid query: ' . mysql_error());
}
while($run_user = mysql_fetch_array($friend_list)){
    if($run_user['user_one'] == $my_id){
        echo "1";
    } else {
        echo "2";
    }
}
}

继承我朋友的桌子结构:

`id` int(11) AUTO INCREMENT PRIMARY  
`user_one` int(11)   
`user_two` int(11) 

我正在尝试获取朋友ID,并确保它不是我的,然后显示我需要的信息,我对SQL有点生疏,所以请记住这一点。

2 个答案:

答案 0 :(得分:0)

只需删除查询内部的括号...已完成

答案 1 :(得分:0)

首先,你不应该使用mysql_。它已被弃用。使用mysqli。

您的查询是:

SELECT `user_one`
FROM `friends`
WHERE (`user_two`='$my_id') OR
SELECT `user_two`
FROM `friends`
WHERE (`user_one`='$my_id')

这没有意义。 OR不用于连接两个查询。一种解决方案是使用union all

SELECT `user_one`
FROM `friends`
WHERE `user_two` = '$my_id'
UNION ALL
SELECT `user_two`
FROM `friends`
WHERE `user_one` = '$my_id';