sql >> Database >  >> RDS >> Mysql

Een PHP-array opmaken voor een SQL IN-clausule

Er is een betere manier

U vermeldt in de opmerkingen dat u CodeIgniter gebruikt. Tenzij u iets buitengewoon ingewikkelds maakt, is er geen praktische reden om uw eigen zelfgemaakte zoekopdrachten te maken wanneer u where_in ingebouwd.

En als dat niet werkt, dan is er een ouderwetse escape .

Oké, dus de meeste mensen zeggen dat je de items moet citeren en geven je dit:

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

maar dat is echt niet voldoende als je de mogelijkheid hebt voor twijfelachtige invoer (zoals '); DROP TABLE STUDENTS; -- . Om je daartegen te beschermen, moet je controleren op SQL-injectie:

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. Hoe de CHARINDEX()-functie werkt in SQL Server (T-SQL)

  2. Hoe to_date() werkt in PostgreSQL

  3. Krijg envelop.i.e overlappende tijdspannes

  4. Strategie voor het synchroniseren van de database van meerdere locaties naar een centrale database en vice versa