Има по-добър начин
Споменавате в коментарите, че използвате CodeIgniter. Освен ако не правите нещо изключително сложно, няма практическа причина да създавате свои собствени домашно приготвени заявки, когато имате where_in
вградени.
И ако това не работи, значи има добър стар escape
.
Добре, значи повечето хора казват, че трябва да цитирате елементите и ви дават това:
function createInClause($arr)
{
return '\'' . implode( '\', \'', $arr ) . '\'';
}
но това наистина не е достатъчно, ако имате възможност за съмнително въвеждане (като '); DROP TABLE STUDENTS; --
. За да се предпазите от това, трябва да проверите за 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 ) . '\'';
}