MYSQL中的WHERE子句有什么问题?

时间:2011-08-26 16:59:30

标签: mysql syntax syntax-error

拜托,我需要帮助!

无论我把这个条款放在哪里:WHERE romaneios_detalhes.id_romaneio ='。$ idr。' 它总是返回一个语法错误...我尝试使用和不使用“table_name。”,在我的语句的所有句子之前和之后,使用和不使用逗号...没有任何作用,我确信解决方案非常简单...

什么是正确的地方或正确的方式来写这个?

$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());

3 个答案:

答案 0 :(得分:5)

问题是您的WHERE子句位于错误的位置;它必须在之后你的JOIN条款。

答案 1 :(得分:1)

问题是INNER JOINS必须在where子句之前!

您需要在分组前移动where子句。

答案 2 :(得分:1)

伊卡洛斯和布赖恩是对的,在JOIN下面移动WHERE。

请注意,我希望$ idr不会从某个参数或其他东西中受到保护,否则您将容易受到SQL注入攻击。