Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Formatowanie tablicy PHP dla klauzuli SQL IN

Jest lepszy sposób

W komentarzach wspominasz, że używasz CodeIgniter. O ile nie robisz czegoś wyjątkowo skomplikowanego, nie ma praktycznego powodu, dla którego powinieneś tworzyć własne domowe zapytania, gdy masz where_in wbudowany.

A jeśli to nie zadziała, to jest dobry, staroświecki escape .

OK, więc większość ludzi mówi, że musisz zacytować pozycje i daje ci to:

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

ale to naprawdę nie wystarczy, jeśli masz możliwość wprowadzenia wątpliwych danych wejściowych (takich jak '); DROP TABLE STUDENTS; -- . Aby się przed tym zabezpieczyć, upewnij się, że sprawdzasz wstrzyknięcie 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 ) . '\'';
}


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. BŁĄD 1045 (28000):Odmowa dostępu dla użytkownika „root”@„localhost” (przy użyciu hasła:NIE)

  2. LAST_INSERT_ID() MySQL

  3. Gdzie zmienić wartość small_case_table_names=2 w systemie Windows xampp

  4. Przesyłanie strumieniowe dużych zestawów wyników za pomocą MySQL

  5. Wyeliminuj podzapytanie dla średniej wartości liczbowej