我有这个SQL查询
$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 :(得分: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";
答案 1 :(得分:0)
我认为问题在于
部分IN (".implode(",", array_map("mysql_real_escape_string", $pole)).")
结果是
IN (test1, test2)
其中test1
和test2
引用列,而您希望它们引用文字,即
IN ('test1', 'test2')
那么可能对您有用的是将该部分重写为
IN ('" . implode("','", array_map("mysql_real_escape_string", $pole)) . "')
使用','
加入所有元素,并将结果包装在'
中以获取边缘情况。
但你真的应该考虑使用绑定。