mysql — заключить строку в одинарные кавычки Переполнение стека

Я строю запрос, и мне нужно обернуть мои строки 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;

Я делал это раньше, но не могу вспомнить! Наверное, все должно быть просто.

1

Решение

Попробуйте с —

            $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;
0

Другие решения

Вы делаете это очень хорошо, за исключением любых потенциальных проблем с инъекцией 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

По вопросам рекламы [email protected]