sql >> Databasteknik >  >> RDS >> Mysql

Formatera en PHP-array för en SQL IN-sats

Det finns ett bättre sätt

Du nämner i kommentarerna att du använder CodeIgniter. Om du inte gör något utomordentligt komplicerat, finns det ingen praktisk anledning till att du ska bygga dina egna hembakade frågor när du har where_in inbyggd.

Och om det inte fungerar, så finns det bra gammaldags escape .

OK, så du har de flesta som säger att du måste citera föremålen och ger dig detta:

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

men det är verkligen inte tillräckligt om du har möjlighet till tveksam input (som '); DROP TABLE STUDENTS; -- . För att skydda dig mot det måste du se till att du letar efter 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. Konvertera datumformat till DD/MMM/ÅÅÅÅ-format i SQL Server

  2. Hur man kontrollerar om en lagrad procedur finns innan den skapas

  3. Hur lägger man till kolumn i tabell i SQL?

  4. sätta upp en databas för att spåra vilka användare som har klickat på vilka länkar?