sql >> Database teknologi >  >> RDS >> Mysql

Formatering af et PHP-array til en SQL IN-klausul

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


  1. SQL WHERE-erklæring

  2. Find alle forespørgsler, der bruger en bestemt tabel

  3. Android SQLite Query - Henter de seneste 10 poster

  4. Opdater flere kolonner i en triggerfunktion i plpgsql