Er is een betere manier
U vermeldt in de opmerkingen dat u CodeIgniter gebruikt. Tenzij u iets buitengewoon ingewikkelds maakt, is er geen praktische reden om uw eigen zelfgemaakte zoekopdrachten te maken wanneer u where_in
ingebouwd.
En als dat niet werkt, dan is er een ouderwetse escape
.
Oké, dus de meeste mensen zeggen dat je de items moet citeren en geven je dit:
function createInClause($arr)
{
return '\'' . implode( '\', \'', $arr ) . '\'';
}
maar dat is echt niet voldoende als je de mogelijkheid hebt voor twijfelachtige invoer (zoals '); DROP TABLE STUDENTS; --
. Om je daartegen te beschermen, moet je controleren op SQL-injectie:
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 ) . '\'';
}