Mysql
 sql >> база данни >  >> RDS >> Mysql

Форматиране на PHP масив за SQL IN клауза

Има по-добър начин

Споменавате в коментарите, че използвате CodeIgniter. Освен ако не правите нещо изключително сложно, няма практическа причина да създавате свои собствени домашно приготвени заявки, когато имате where_in вградени.

И ако това не работи, значи има добър стар escape .

Добре, значи повечето хора казват, че трябва да цитирате елементите и ви дават това:

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

но това наистина не е достатъчно, ако имате възможност за съмнително въвеждане (като '); DROP TABLE STUDENTS; -- . За да се предпазите от това, трябва да проверите за 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. Прост Ajax Jquery скрипт - Как мога да получа информация за всеки от редовете в таблицата?

  2. как да конвертирате varchar във формат за дата и час в mysql

  3. Java, управляван от MySQL тригер

  4. Грешка при създаването на таблица

  5. Има ли разлика между DATE_SUB() и използването на аритметични оператори за изчисляване на дата и час?