Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Formatieren eines PHP-Arrays für eine SQL IN-Klausel

Es gibt einen besseren Weg

Sie erwähnen in den Kommentaren, dass Sie CodeIgniter verwenden. Sofern Sie nicht etwas außerordentlich Kompliziertes machen, gibt es keinen praktischen Grund, warum Sie Ihre eigenen hausgemachten Abfragen erstellen sollten, wenn Sie where_in eingebaut.

Und wenn das nicht funktioniert, gibt es den guten alten escape .

OK, die meisten Leute sagen, dass Sie die Artikel zitieren müssen, und geben Ihnen Folgendes:

function createInClause($arr)
{
    return '\'' . implode( '\', \'', $arr ) . '\'';
}

aber das reicht wirklich nicht aus, wenn Sie die Möglichkeit zu fragwürdigen Eingaben haben (wie etwa '); DROP TABLE STUDENTS; -- . Um sich davor zu schützen, müssen Sie sicherstellen, dass Sie nach SQL-Einschleusung: suchen

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 ) . '\'';
}