![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?8acaa2e)
プログラム初心者です
最近PDO使うようになりましたがまったく使いこなせません
何回もSQL発行して効率わるいコードになりました(--;
一回のSQL発行にまとめる方法はありますか?
for ($i=0; $i<$count; $i++) {
$id=$Array[$i][0];
$name=$Array[$i][1];
$stmt = $pdo -> prepare("INSERT IGNORE INTO table(id,name) VALUES (?,?)");
$stmt->bindValue(1, $id, PDO::PARAM_INT);
$stmt->bindValue(2, $name, PDO::PARAM_STR);
$stmt->execute();
}
質問2
prepareのキャッシュを利かすってどうゆうことでしょうか?上の場合でもキャッシュ生かせていますか?
よろしくお願いします
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);
回答ありがとうございます
これはすごい速いですね。20倍以上高速なんですが(汗
ここまで早くなるとわ・・・さすがです
実測値です(配列の中身10個)
0.046875秒掛かりました。1回目
0.046875秒掛かりました。2回目
0.0625秒掛かりました。3回目
No.1
- 回答日時:
$stmt = $pdo -> prepare("INSERT IGNORE INTO table(id,name) VALUES (?,?)");
↓
ループ中で同じものを繰り返しprepareしているのが無駄です。1回作ってしまえば何回もbindValue・executeで使いまわすことが出来ます。for文の前に出してください。これが「キャッシュを生かす」ということです。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- PHP 重複を防ぐ記述について教えて下さい。 3 2023/04/03 14:35
- PHP DBのハッシュ化したパスワードをpassword_verifyで戻し照合したのですが上手く行きません 2 2023/02/06 13:24
- Perl RSSにdiv,ul classを付けたいのですがどのようにつけるのかわからないです 2 2022/03/28 01:53
- PHP PHP一覧表示した項目にリンクをはりたい 1 2023/07/12 17:08
- MySQL addcslashesの使い方について教えてください。 DBに繋げてそこから、部分一致させたいのです 1 2023/04/14 22:59
- PHP PHP MySql ページング 2 2022/09/20 06:38
- CGI perlで書いたcgiでsqliteの使い方を教えてください 2 2023/05/08 21:29
- MySQL SQL任意に並び替えをしたい 2 2023/08/28 10:47
- PHP プログラムコードを入力する場合改行してもいいですか? 2 2022/10/02 16:05
- PHP php my adminより取り出したデータ表示 2 2022/06/15 11:56
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
SQLインジェンクション対策法を...
-
このプログラムの改善点を教え...
-
PHP+MySQLの「データ...
-
functionとclassの使い分け
-
phpで読み込んだcsvが文字化け...
-
パラメータを2個つけたい
-
連想配列について
-
phpで変数を使ってcopyできない
-
C# 同じ処理をまとめたい
-
Fortranでのファイル名操作につ...
-
PHPで作成した2つのプログラム...
-
JSONデータ登録について
-
PHPの改変について
-
phpでランダムにページを表示
-
初心者です。入力フォームのp...
-
引数と変数について
-
HTMLで前の画面に戻る時、入力...
-
<input type="hidden" >で配列...
-
PHPでURLにジャンプするには?
-
コンボボックス(プルダウン)...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VBA で、スペースを含むファイ...
-
ファイル名を変更してアップロ...
-
アップロードファイル名の文字化け
-
PHPからHTMLへの変数の受け...
-
プログラミングC++のmapについて
-
phpで変数を使ってcopyできない
-
Flaskでサーバー立ち上げに関して
-
POSTの項目に追加
-
SQLインジェンクション対策法を...
-
パラメータを2個つけたい
-
サブフォルダ内の全てのテキス...
-
フォームで送られてきたメール...
-
PHP FTPサーバへの画像アップロ...
-
連想配列を複数条件で比較して...
-
name属性が全角の場合・・・
-
if function PHP
-
マクロ(VBA)について
-
PDOのprepareでLIKEの部分一致...
-
画像をDBに登録できない
-
php メールフォーム エラー表...
おすすめ情報