• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:PDOについて)

PDOの使い方と効率的なSQL発行について

このQ&Aのポイント
  • プログラム初心者がPDOを使いこなす方法について
  • 複数のSQL発行を一回の発行にまとめる方法について
  • prepareのキャッシュを利用して効率的なSQL処理をする方法について

質問者が選んだベストアンサー

  • ベストアンサー
  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.2

こんな感じでいけないですか? $pdo = new PDO($dsn,$user,$password); $place_holders= implode(',', array_fill(0, count($Array), '(?,?)')); $vals=array(); foreach($Array as $a){ $vals[]=$a[0]; $vals[]=$a[1]; } $stmt = $pdo -> prepare("INSERT IGNORE INTO table(id,name) VALUES".$place_holders); $stmt->execute($vals);

flash0
質問者

お礼

回答ありがとうございます これはすごい速いですね。20倍以上高速なんですが(汗 ここまで早くなるとわ・・・さすがです 実測値です(配列の中身10個) 0.046875秒掛かりました。1回目 0.046875秒掛かりました。2回目 0.0625秒掛かりました。3回目

その他の回答 (1)

noname#244856
noname#244856
回答No.1

$stmt = $pdo -> prepare("INSERT IGNORE INTO table(id,name) VALUES (?,?)"); ↓ ループ中で同じものを繰り返しprepareしているのが無駄です。1回作ってしまえば何回もbindValue・executeで使いまわすことが出来ます。for文の前に出してください。これが「キャッシュを生かす」ということです。

flash0
質問者

お礼

回答ありがとうございます キャッシュを生かすとはそうゆうことだったですね勉強になりました。ありがとうございます

関連するQ&A