0

一度に数行を挿入する必要があり、すべての行が同じ値になります。そのクエリを短縮する方法はありますか?

$stmt = $db->prepare('
    INSERT INTO `tablename`
    (`value`) VALUES (?), (?), (?), (?), (?)
');
$stmt->execute(array($value, $value, $value, $value, $value));
4

4 に答える 4

0

以下が機能するかどうかはわかりません。
しかし、少なくとも一度に複数の挿入の構文を提供します。

$stmt = $db->prepare('
INSERT INTO example
  (example_id, name, value, other_value)
VALUES
  (?, ?, ?, ?),
  (?, ?, ?, ?),
  (?, ?, ?, ?),
  (?, ?, ?, ?);
');
$stmt->execute(
    array(
        $value, $value, $value, $value, $value, 
        $value, $value, $value, $value, $value, 
        $value, $value, $value, $value, $value, 
        $value, $value, $value, $value, $value
));
于 2013-09-11T15:38:27.513 に答える
0

準備済みステートメントを使用しているので、ループで execute() を呼び出してみませんか?:

$rowsToInsert = 5;

$stmt = $db->prepare('INSERT INTO `tablename` (`value`) VALUES (?)');
for($i = 0; $i < $rowsToInsert; $i++) {
    $stmt->execute(array($value));
}

単一クエリの複数行挿入よりも、プログラムで制御する方がはるかに簡単です。

于 2013-09-11T15:42:09.803 に答える