Я строю запрос, и мне нужно обернуть мои строки 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;
Я делал это раньше, но не могу вспомнить! Наверное, все должно быть просто.
Попробуйте с —
$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;
Вы делаете это очень хорошо, за исключением любых потенциальных проблем с инъекцией 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
родом из? Поскольку он не изменяется в цикле, он либо всегда добавляет запятую, либо никогда. Это, вероятно, не то, что вы хотите.