2012-09-04 6 views
0

누군가 나를 위해 오류를 발견하는 데 도움이 될지 궁금합니다. 나는 테이블에 가입하는 것이 매우 새로운데, 마지막 비트까지 잘 해냈습니다.테이블 조인 (SQL 구문의 오류)

SQL 구문에 오류가 있습니다. '(10,8)'및 d.streamitem_target IN '(10,8)'근처에서 사용할 올바른 구문에 대해서는 MySQL 서버 버전에 해당하는 설명서를 확인하십시오. ORDER BY d.streamitem_id DE 'at line 9

$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 (...) 구문을 인용 것 같다 변경 :'.. IN '$ friendlist''. * 실제 * 쿼리, 즉 구문 분석 된'$ call' 변수를 지나치십시오. –

+0

'$ friendlist'가 괄호를 포함하는 문자열이면 따옴표로 묶지 마십시오. – Matt

답변

3
OR d.streamitem_creator IN '$friendlist' 

당신은 IN 변수를 인용하지 않는

OR d.streamitem_creator IN $friendlist 

해야한다.

동일 내용은 AND d.streamitem_target IN '$friendlist' 행에 적용됩니다.

+0

나는 그것을 기억할 것이다. 훌륭하게 작동합니다. 고맙습니다. – dave

+1

코드에서 [PDO] (http://php.net/book.pdo.php)를 사용해보십시오. 매개 변수를 더 쉽게 구문 분석하고 형식을 지정하는 데 도움이됩니다. 그리고 MySQL_ * 함수는 이제 더 이상 사용되지 않습니다. –

+0

나는 너의 제안을 살펴볼 것이다. 고마워요 @ 매트. 그것이 나를 허용 할 때. – dave

1

쉼표로 구분 된 목록을 따옴표로 묶습니다. 그러지 마.

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

내가 당신의 문제는 예를 들어,있는 가능성이 IN 절에서 $의 friendlist 주위에 작은 따옴표를 생각

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