Existuje lepší způsob
V komentářích uvádíte, že používáte CodeIgniter. Pokud nevytváříte něco mimořádně složitého, neexistuje žádný praktický důvod, proč byste měli vytvářet své vlastní domácí dotazy, když máte where_in
vestavěný.
A pokud to nefunguje, pak existuje dobrý staromódní escape
.
Dobře, takže většina lidí říká, že musíte položky citovat, a dávají vám toto:
function createInClause($arr)
{
return '\'' . implode( '\', \'', $arr ) . '\'';
}
ale to opravdu nestačí, pokud máte možnost pochybného vstupu (jako je '); DROP TABLE STUDENTS; --
. Abyste se proti tomu chránili, musíte zkontrolovat vložení 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 ) . '\'';
}