Jest lepszy sposób
W komentarzach wspominasz, że używasz CodeIgniter. O ile nie robisz czegoś wyjątkowo skomplikowanego, nie ma praktycznego powodu, dla którego powinieneś tworzyć własne domowe zapytania, gdy masz where_in
wbudowany.
A jeśli to nie zadziała, to jest dobry, staroświecki escape
.
OK, więc większość ludzi mówi, że musisz zacytować pozycje i daje ci to:
function createInClause($arr)
{
return '\'' . implode( '\', \'', $arr ) . '\'';
}
ale to naprawdę nie wystarczy, jeśli masz możliwość wprowadzenia wątpliwych danych wejściowych (takich jak '); DROP TABLE STUDENTS; --
. Aby się przed tym zabezpieczyć, upewnij się, że sprawdzasz wstrzyknięcie SQL:
function createInClause($arr)
{
$tmp = array();
foreach($arr as $item)
{
// this line makes sure you don't risk a sql injection attack
// $connection is your current connection
$tmp[] = mysqli_escape_string($connection, $item);
}
return '\'' . implode( '\', \'', $tmp ) . '\'';
}