2011-08-26 57 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