2011-08-26 62 views
0

请,我需要帮助!MYSQL中这个WHERE子句有什么问题?

无论我在哪里放这个子句: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()); 
+1

先尝试mysql命令行上的语句。顺序应该是“选择......从......加入......群组......在......”。 –

回答

5

的问题是,你的WHERE子句是放错了地方;它必须是之后您的JOIN子句。

+0

Tks男人!我做了,它工作了! – Acchile

1

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

您需要在组之前的末尾移动where子句。

+0

tks男人,我做到了,工作... – Acchile

1

伊卡洛斯和布莱恩是正确的,移动下面的联合。

请注意,我希望$ idr不会受到来自?参数或其他内容的保护,否则您将很容易被SQL注入。

+0

伊卡洛斯,帮助我...我不明白关于SQL注入... $ idr来自$ _GET ['id_romaneio']。如何从sql注入保护这种参数? – Acchile

+0

对不起,没有伊卡洛斯,是Stian! – Acchile

+0

@acchile我不是一个PHP开发人员,但我看到其他PHP开发人员防止SQL注入的方式是,他们通过调用mysql_escape_string func来跳过参数http://php.net/manual/en/function.mysql- escape-string.php – Icarus