Der er en bedre måde
Du nævner i kommentarerne, at du bruger CodeIgniter. Medmindre du laver noget ekstraordinært kompliceret, er der ingen praktisk grund til, at du skal bygge dine egne hjemmebagte forespørgsler, når du har where_in
indbygget.
Og hvis det ikke virker, så er der en god gammeldags escape
.
OK, så de fleste siger, at du skal citere varerne og giver dig dette:
function createInClause($arr)
{
return '\'' . implode( '\', \'', $arr ) . '\'';
}
men det er virkelig ikke tilstrækkeligt, hvis du har mulighed for tvivlsom input (såsom '); DROP TABLE STUDENTS; --
. For at beskytte mod det skal du sørge for at tjekke for 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 ) . '\'';
}