Загрузка новых файлов в репозиторий git напрямую через веб-приложение github

Вставка нескольких значений с помощью подготовленных заявлений PDO

Вставка нескольких значений в один оператор выполнения. Почему, потому что согласно этой странице она быстрее, чем обычные вставки.

$datafields = array('fielda', 'fieldb', ... );

$data[] = array('fielda' => 'value', 'fieldb' => 'value' ....);
$data[] = array('fielda' => 'value', 'fieldb' => 'value' ....);

больше значений данных или у вас, вероятно, есть цикл, который заполняет данные.

С подготовленными вставками вам нужно знать введенные вами поля и количество полей создать? заполнители для привязки ваших параметров.

insert into table (fielda, fieldb, ... ) values (?,?...), (?,?...)....

Это в основном то, как мы хотим, чтобы выражение insert выглядело.

Теперь код:

function placeholders($text, $count=0, $separator=","){
    $result = array();
    if($count > 0){
        for($x=0; $x<$count; $x++){
            $result[] = $text;
        }
    }

    return implode($separator, $result);
}

$pdo->beginTransaction(); // also helps speed up your inserts.
$insert_values = array();
foreach($data as $d){
    $question_marks[] = '('  . placeholders('?', sizeof($d)) . ')';
    $insert_values = array_merge($insert_values, array_values($d));
}

$sql = "INSERT INTO table (" . implode(",", $datafields ) . ") VALUES " .
       implode(',', $question_marks);

$stmt = $pdo->prepare ($sql);
try {
    $stmt->execute($insert_values);
} catch (PDOException $e){
    echo $e->getMessage();
}
$pdo->commit();

Хотя в моем тесте разница в 1 с была при использовании нескольких вставок и регулярных подготовленных вставок с единственным значением.

30
задан Andrew Barber 1 May 2013 в 01:09
поделиться