2016-02-29 27 views
0

我有這樣的SQL查詢SQL多用WHERE子句中破滅

$pole = array(); 
$pole[] = "test1"; 
$pole[] = "test2"; 

$pocet_k = count($pole); 

    $query = "Select * from kategorie join recepty on recepty.kategorie_idkategorie=kategorie.idkategorie join druhy on druhy.iddruhy = recepty.druhy_iddruhy join recepty2suroviny on recepty_idrecepty=idrecepty join suroviny on idsuroviny=suroviny_idsuroviny WHERE suroviny.nazev_suroviny IN (".implode(",", array_map("mysql_real_escape_string", $pole)).") group by idrecepty having count(*)"."="."'$pocet_k'"." "."and druhy.iddruhy=recepty.druhy_iddruhy 
    order by recepty.nazev_receptu"; 

我收到錯誤Unknown column 'test1' in 'where clause'加入,我不知道如何解決它: -/

+0

你能分享$ query的內容嗎?你也可以刪除MySQL/SQL Server標籤。它們是不同的產品,通常需要不同的解決方案 –

+0

好吧,就像錯誤說的那樣,數據庫表中沒有'test1'列,這是您在where語句中傳遞的參數。 –

回答

0

我試圖與" . $pocet_k . "和其他小..

$pole = []; 
$pole[] = ["test1"]; 
$pole[] = ["test2"]; 

$pocet_k = count($pole); 

$query = "Select * from kategorie 
join recepty on recepty.kategorie_idkategorie=kategorie.idkategorie 
join druhy on druhy.iddruhy = recepty.druhy_iddruhy 
join recepty2suroviny on recepty_idrecepty=idrecepty 
join suroviny on idsuroviny=suroviny_idsuroviny 
WHERE suroviny.nazev_suroviny IN (" . implode(",", array_map("mysql_real_escape_string", $pole)).") 
group by idrecepty 
having count(*) = " . $pocet_k . " and druhy.iddruhy=recepty.druhy_iddruhy 
order by recepty.nazev_receptu"; 
0

我認爲這個問題是在部分

IN (".implode(",", array_map("mysql_real_escape_string", $pole)).") 

導致

IN (test1, test2) 

其中test1test2引用列,而你希望他們指的文字,這是

IN ('test1', 'test2') 

那麼,什麼可能爲你工作正在改寫該部分

IN ('" . implode("','", array_map("mysql_real_escape_string", $pole)) . "') 

其中加入所有元素','和包裝邊緣情況下的結果爲'

但是你真的應該考慮使用綁定