Hay una mejor manera
Mencionas en los comentarios que estás usando CodeIgniter. A menos que esté haciendo algo extraordinariamente complicado, no hay ninguna razón práctica por la que deba crear sus propias consultas caseras cuando tiene where_in
integrado.
Y si eso no funciona, entonces hay un buen escape
.
OK, entonces, la mayoría de las personas dicen que necesita cotizar los artículos y le están dando esto:
function createInClause($arr)
{
return '\'' . implode( '\', \'', $arr ) . '\'';
}
pero eso realmente no es suficiente si tiene la posibilidad de una entrada cuestionable (como '); DROP TABLE STUDENTS; --
. Para protegerse contra eso, debe asegurarse de verificar inyección 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 ) . '\'';
}