下記の配列のデータをMySQLのデータベースに登録をしたいと思っています。
(参考)に記述しています内容で実行をしましたが、1つ目のデータしか登録がされず、
for文なども考え試行錯誤していましたが、うまく実行できない状況であります。
登録のための方法をご教授いただければと思います。よろしくお願いします。
array(3) {
[0]=>"146-0082"
[1]=>"東京都大田区"
[2]=>"田中さん"
array(3) {
[0]=>"120-0015"
[1]=>"東京都足立区"
[2]=>"山田さん"
--------------------
(参考)
$sql = ('insert into table (number, adress, name) values (:number, :adress, :name)');
$stmt = $dbh->prepare($sql);
$params = array(
":number" => $data[0],
":adress" => $data[1],
":name" => $data[2]
);
No.3ベストアンサー
- 回答日時:
>$array =
>array("146-0082", "東京都大田区", "田中さん"),
>array("120-0015", "東京都足立区", "山田さん"),
>);
となっております。
いや、syntax errorになるソースで提示されても困ります・・・
私が書いたとおり
$array = array(
array("146-0082", "東京都大田区", "田中さん"),
array("120-0015", "東京都足立区", "山田さん"),
);
という意味でいいということですよね。
この配列(insertする内容だけで構成)が生成できているなら疑問符プレースホルダを使って
$stmt = $dbh->prepare('insert into table (number, address, name) values (?, ?, ?)');
foreach ($array as $data) { $stmt->execute($data); }
とも書けますね。
なお、PDOのエラーモードは適切に設定されていますでしょうか?デフォルトはPDO::ERRMODE_SILENTなので何かエラーがあってもわかりません(エラーになる記述なのに「何故か動かない」と悩む方を見かけますので)。
http://www.php.net/manual/ja/pdo.error-handling. …
ご返答ありがとうございます。
不十分な情報での質問となり申し訳ありませんでした。
ご指摘のとおりPDOのエラーモードの設定も行ってみたいと思います。
No.2
- 回答日時:
こんな感じでどうでしょう?
<?PHP
$array = array(
array("146-0082", "東京都大田区", "田中さん"),
array("120-0015", "東京都足立区", "山田さん"),
array("000-000", "北海道札幌市", "佐藤さん"),
array("999-999", "沖縄県那覇市", "鈴木さん"),
);
$pdo = new PDO($dsn, $user,$password);
$sql="insert into tbl (`number`,`address`,`name`) values";
$str="(".implode(",",array_fill(1,3,"?")).")";
$sql.=implode(",",array_fill(1,count($array),$str));
//print $sql.";<br>\n";
$a=array();
array_walk_recursive($array, function($b) use (&$a){$a[] = $b;});
//print_r($a);
$stmt = $pdo->prepare( $sql);
$stmt->execute($a);
ご回答ありがとうございます。
array_walk_recursiveは初めて知った関数で非常に参考となりました。
質問させていただいた内容は、まだ試行錯誤中ですが、もう試してみたいと思います。
ありがとうございます。
No.1
- 回答日時:
>下記の配列のデータ
どういう構成になっているのか読み取れません。例示してください。
たとえば
$array = array(
array("146-0082", "東京都大田区", "田中さん"),
array("120-0015", "東京都足立区", "山田さん"),
);
のようになっているのであれば、
$sql = ('insert into table (number, address, name) values (:number, :address, :name)');
$stmt = $dbh->prepare($sql);
foreach ($array as $data) {
$stmt->execute(array(":number"=>$data[0], ":address"=>$data[1], ":name"=>$data[2]));
}
でいいと思いますが・・・
この回答への補足
配列の構成を正しくお伝えできておりませんでした。
$array =
array("146-0082", "東京都大田区", "田中さん"),
array("120-0015", "東京都足立区", "山田さん"),
);
となっております。
大変お手数でございますが、再度ご回答をいただきたく思います。
よろしくお願いいたします。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- PHP PHP MySQLに画像を直接保存 2 2022/06/05 11:50
- PHP 重複を防ぐ記述について教えて下さい。 3 2023/04/03 14:35
- CGI perlで書いたcgiでsqliteの使い方を教えてください 2 2023/05/08 21:29
- C言語・C++・C# c言語の問題です 課題1 (二分探索木とセット) 大きさ size の配列 array を考える。す 2 2023/01/10 21:08
- Oracle 質問です。 下記のテーブルとデータがあり、 取得想定結果のように出力したいです。 下記のsqlだと0 2 2023/05/23 19:10
- PHP 配列の値の更新方法について 1 2022/08/05 09:49
- PHP ファイルの書き込みについて教えて下さい。 1 2023/03/20 12:01
- MySQL 書籍の内容はまともでしょうか? 1 2023/01/22 03:07
- JavaScript java keyを配列で表記したい 10 2022/12/01 17:53
- PHP PHPでCSVを出力するさいに、ループの中で前の行の値を変更したい 3 2022/10/27 17:44
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
特定の文からメールアドレスの...
-
スカラーのベクトル微分
-
読み(あ行~わ行)ごとに分け...
-
多次元連想配列 検索 削除 ...
-
配列の添え字が小数だとどうなる?
-
STLのvectorで作った配列をメン...
-
プログラミングのPythonのnoteb...
-
PHPに関する質問です
-
重複配列除外方法
-
C言語 最大値と最小値を求めて...
-
arrayをどうやって表示するのか?
-
配列の要素(value)に、変数を...
-
PHPでDBの複数行更新について
-
Texでの数式
-
file_existsでファイル名の部分...
-
プルダウンメニューにDBの内容...
-
行数が30万件ほどあるCSVから、...
-
複数行のデータのPOST処理に関して
-
チェックボックス複数選択 mys...
-
日付、時間の2段階でソート
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
スカラーのベクトル微分
-
特定の文からメールアドレスの...
-
読み(あ行~わ行)ごとに分け...
-
ファイルの書き込みについて教...
-
php で1から100までの素数の表...
-
C言語の配列をPush(追加)する...
-
配列の要素(value)に、変数を...
-
STLのvectorで作った配列をメン...
-
C言語 最大値と最小値を求めて...
-
行列
-
verilogで、配列の一部をタスク...
-
CArrayのソート
-
PHPのセレクトボックスの初期値...
-
Perlで重複行を削除したい
-
pythonのnumpyでの繰り返しでの...
-
System.String.Splitでエラー
-
連想配列から<th>を含むテーブ...
-
2次元配列CSVのソート
-
【PHP】配列のキー名の修正は可...
-
Pager::factory()の使い方がわ...
おすすめ情報