2012-09-04 79 views
0

我不知道是否有人可以帮我发现错误。我很想加入表格,但我做得很好,最后一点。连接表(SQL语法错误)

您的SQL语法错误;检查与您的MySQL服务器版本相对应的手册,以在''(10,8)'AND d.streamitem_target IN'(10,8)')附近使用正确的语法。在第9行的ORDER BY d.streamitem_id DE'

$call="SELECT d.*, c.*, u.* 
    FROM streamdata   AS d 
    JOIN streamdata_comments AS c ON d.streamitem_id = c.comment_streamitem 
    JOIN users    AS u ON u.id = c.comment_poster 
WHERE c.comment_poster = '$following_string' 
    AND d.streamitem_id < '$lastID' 
    AND (d.streamitem_target = '$following_string' OR 
     d.streamitem_creator = '$following_string') 
    OR d.streamitem_creator IN '$friendlist' 
    AND d.streamitem_target IN '$friendlist' 
    ORDER BY d.streamitem_id DESC LIMIT 10"; 
+5

看来你引述IN(...)语法:'..在'$ friendlist'中。请过*真实*查询,即解析的$ $ call变量。 –

+0

如果'$ friendlist'是一个包含圆括号的字符串,请不要用引号引起来。 – Matt

回答

3
OR d.streamitem_creator IN '$friendlist' 

应该

OR d.streamitem_creator IN $friendlist 

你不要引用IN变量。

这同样适用于AND d.streamitem_target IN '$friendlist'一行。

+0

我会记住未来。很棒。谢谢。 – dave

+1

您应该尝试在代码中使用[PDO](http://php.net/book.pdo.php),它将帮助您更轻松地解析和格式化参数。而MySQL_ *函数现在已被弃用。 –

+0

我会研究你的建议。谢谢@Matt。将接受,当它允许我。 – dave

1

您将用逗号分隔的列表括在引号中。不要这样做。

. 
. 
. 
OR d.streamitem_creator IN $friendlist 
AND d.streamitem_target IN $friendlist 
. 
. 
. 
2

我觉得可能围绕在IN子句$好友列表中的单引号是你的问题,例如,更改为

OR d.streamitem_creator IN $friendlist 
    AND d.streamitem_target IN $friendlist