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

Кой е най-добрият начин за вмъкване на няколко реда в PHP PDO MYSQL?

Имате поне тези две опции:

$rows = [(1,2,3), (4,5,6), (7,8,9) ... ];

$sql = "insert into `table_name` (col1, col2, col3) values (?,?,?)";

$stmt = $db->prepare($sql);

foreach($rows as $row)
{
    $stmt->execute($row);
}

OR:

$rows = [(1,2,3), (4,5,6), (7,8,9) ... ];

$sql = "insert into `table_name` (col1, col2, col3) values ";

$paramArray = array();

$sqlArray = array();

foreach($rows as $row)
{
    $sqlArray[] = '(' . implode(',', array_fill(0, count($row), '?')) . ')';

    foreach($row as $element)
    {
        $paramArray[] = $element;
    }
}

// $sqlArray will look like: ["(?,?,?)", "(?,?,?)", ... ]

// Your $paramArray will basically be a flattened version of $rows.

$sql .= implode(',', $sqlArray);

$stmt = $db->prepare($sql);

$stmt->execute($paramArray);

Както можете да видите, първата версия включва много по-опростен код; обаче втората версия изпълнява пакетно вмъкване. Вмъкването на партида трябва да е по-бързо, но съм съгласен с @BillKarwin че разликата в производителността няма да бъде забелязана в по-голямата част от реализациите.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Какво представлява DC2Type тип данни на масива в mysql

  2. конфигурацията на инсталацията на mysql сървъра е неуспешна ИЛИ не може да стартира услугата

  3. Mysql Изберете отделни записи само от последните дати

  4. Как да коригирам MySQL грешка 1064

  5. sunspot solr недефиниран тип поле