Det finns ett bättre sätt
Du nämner i kommentarerna att du använder CodeIgniter. Om du inte gör något utomordentligt komplicerat, finns det ingen praktisk anledning till att du ska bygga dina egna hembakade frågor när du har where_in
inbyggd.
Och om det inte fungerar, så finns det bra gammaldags escape
.
OK, så du har de flesta som säger att du måste citera föremålen och ger dig detta:
function createInClause($arr)
{
return '\'' . implode( '\', \'', $arr ) . '\'';
}
men det är verkligen inte tillräckligt om du har möjlighet till tveksam input (som '); DROP TABLE STUDENTS; --
. För att skydda dig mot det måste du se till att du letar efter SQL-injektion:
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 ) . '\'';
}