2011-08-26 3 views
0

제발, 도와 줘! 나는이 절 어디다 MYSQL에서 WHERE 절이 잘못되었습니다.

문제가되지 않는다 '.. $의 IDR'WHERE romaneios_detalhes.id_romaneio =을 그것은 항상 문법 오류를 반환합니다 ... 나는 "table_name."과 함께, 그리고 전에는 내 statment의 모든 setence 전에, 쉼표없이 ... 시도하지 않고 노력했습니다. 아무것도 작동하지 않으며 솔루션이 꽤 간단하다고 확신합니다. .

이 글을 쓰려면 적절한 장소 또는 올바른 방법은 무엇입니까?

$sql3 = 'SELECT 
     produtos_linhas.linha AS `COUNT(linha)`, 
     produtos_tipos.tipo AS `COUNT(tipo)`, 
     COUNT(romaneios_detalhes.quantidade) AS `COUNT(quantidade)` 
     FROM romaneios_detalhes 
     WHERE romaneios_detalhes.id_romaneio = '.$idr.' 
     INNER JOIN produtos ON romaneios_detalhes.codigo = produtos.codigo 
     INNER JOIN produtos_linhas ON produtos.id_linha = produtos_linhas.id 
     INNER JOIN produtos_tipos ON produtos.id_tipo = produtos_tipos.id 
     GROUP BY produtos_linhas.linha, produtos_tipos.tipo '; 

echo '<p>'.$sql3.'</p>'; 
/* OUTPUT OF THIS ECHO: 
SELECT produtos_linhas.linha AS `COUNT(linha)`, produtos_tipos.tipo AS `COUNT(tipo)`, COUNT(romaneios_detalhes.quantidade) AS `COUNT(quantidade)` FROM romaneios_detalhes WHERE romaneios_detalhes.id_romaneio = 3 INNER JOIN produtos ON romaneios_detalhes.codigo = produtos.codigo INNER JOIN produtos_linhas ON produtos.id_linha = produtos_linhas.id INNER JOIN produtos_tipos ON produtos.id_tipo = produtos_tipos.id GROUP BY produtos_linhas.linha, produtos_tipos.tipo 
*/ 

$qry3 = mysql_query($sql3) or die ($qry3_err.mysql_error()); 
+1

먼저 mysql 명령 줄에서 명령문을 실행 해보십시오. 순서는 "select ... from ... join ... group by ... where ..."이어야합니다. –

답변

5

문제는 WHERE 절이 잘못된 위치에 있다는 것입니다. 귀하의 JOIN 조항 이후에 이어야합니다.

+0

Tks man! 나는 해냈다. – Acchile

1

문제는 INNER이 where 절을하기 전에 이동해야 JOINS이다!

그룹 끝 부분의 where 절을 이동해야합니다. 이카루스와 브라이언이 맞다

+0

tks 남자, 나는 그것을했고 일했다 ... – Acchile

1

는 조인 WHERE 아래로 이동합니다.

$ idr이 (가)? 매개 변수 나 다른 것으로부터 보호받지 못하기를 바랍니다. 그렇지 않으면 SQL 주입에 취약 할 것입니다.

+0

이카루스, 도와주세요 ... 나는 SQL 주입에 대해 이해하지 못한다 ... $ idr은 $ _GET [ 'id_romaneio']에서 나온다. 어떻게 SQL 주입에서 매개 변수 의이 종류를 보호하기 위해? – Acchile

+0

죄송합니다, 이카루스가 없습니다, 스탠리 아어입니다! – Acchile

+0

@acchile 저는 PHP 개발자는 아니지만 다른 PHP 개발자가 SQL injection을 방지하는 방법은 mysql_escape_string func을 호출하여 매개 변수를 이스케이프 처리한다는 것입니다. http://php.net/manual/en/function.mysql- escape-string.php – Icarus

관련 문제