我正在构建一个查询,我需要用single quote
:
$sqlRome.="SELECT distinct id_jeune FROM jeunes_rome WHERE code_rome IN (";
foreach ($liste_rome as $rome):
$sqlRome.="'".$rome."'";//HERE
if ($j < count($liste_rome) - 1):
$sqlRome.=",";
$sqlRome.=") GROUP BY id_jeune HAVING COUNT(*)=" . $j;
我以前做过,但我记不起来了!我想这一定很简单。
答案 0 :(得分:1)
除了任何潜在的SQL注入问题之外,你做得很好。
您的块结构确实存在问题,但请使用{ ... }
或以正确的块结尾结束foreach ():
和if ():
语句:
$sqlRome="SELECT distinct id_jeune FROM jeunes_rome WHERE code_rome IN (";
// ^ no concatenation here
foreach ($liste_rome as $rome):
$sqlRome.="'".$rome."'";//HERE
if ($j < count($liste_rome) - 1):
$sqlRome.=",";
// end the if statement
endif;
// end the foreach loop
endforeach;
$sqlRome.=") GROUP BY id_jeune HAVING COUNT(*)=" . $j;
$j
来自哪里?因为它在循环中没有改变,所以它总是添加逗号或从不。这可能不是你想要的。
答案 1 :(得分:0)
尝试 -
$sqlRome.="SELECT distinct id_jeune FROM jeunes_rome WHERE code_rome IN (";
foreach ($liste_rome as $rome) {
$var[] = "'".$rome."'";
}
$sqlRome.= implode(',', $var);
$sqlRome.=") GROUP BY id_jeune HAVING COUNT(*)=" . $j;