- ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:PHPのforeachでMysqlにINSERT)
PHPのforeachでMysqlにINSERT
このQ&Aのポイント
- PHPのforeach文を使ってMysqlにデータをINSERTする方法について質問があります。
- 質問者は配列$resultをforeach文で処理し、連想配列の値をデータベースに追加しようとしています。
- しかし、データベースに格納されるのは1行目のデータのみで、原因が分かりません。アドバイスを求めています。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
むしろ、1行目が挿入されているという事の方が不可解な気が… ちゃんと見てないけど、こういうことかな。 $sql->execute(array('a' => $value[A], 'b' => $value[B], 'c' => $value[C], 'd' => $value[D], 'e' => $value[E])); あるいは『INSERT INTO sample』なのに『select * from test;』としているのがおかしいのか、それともこれは単に書き間違えなのか? なんでループ内でprepareしてるんだろうとか、なんで無意味に$keyを取得してるんだろうとか、$value[A]とかはちゃんと$value['A']と括った方がいいよねとか、DBに主キーはちゃんと設定しているのだろうかとか、エラーやワーニングは出ていないんだろうかとか、色々とあるけれど、まあそこはいいとして… aとかAとか見てらんねーよ!! テストやサンプルにしても、もうちょっとなんかあるだろう!! 見てらんねーもん作っても、あんま勉強になんかなんねーよ!! という事は、強く言っておこう。 単なる書き間違えかもしんないが、sampleやtestなんて現実的な意味をなさない名前だから、間違っていても気付かない。 aとかAも同様、だから碌に勉強にならない。 プログラムなんて、頭の中で意味をこねくり回すものだからだ。 という事。
お礼
すみません。$keyも残骸です。ありがとうございました。
補足
ご回答頂きありがとうございます。 >DBに主キー 申し訳ございません。オートインクリメントし忘れているだけでした。 ただ、execute()はマニュアルの書き方を習っているので間違いはありませんでした。またよくよく見てみると、Prepare the query onceと書いてあったのでforeachの外に出しました。 その他ご指摘頂いた件は書き間違いなだけです。もろもろ失礼致しました。 >aとかAとか見てらんねーよ!! >テストやサンプルにしても、もうちょっとなんかあるだろう!! >見てらんねーもん作っても、あんま勉強になんかなんねーよ!! 閲覧者様が読みやすいように簡単に書いたつもりが間違っていてはまるで意味がないことは反省しておりますが、それだけで勉強している訳ではありませんのでご理解頂きたく。 書き方の問題だけであって動きは同じでしょう。 ただ、解決に繋がりましたのでその点はもろもろご指摘頂けたことに感謝申し上げます。 誠にありがとうございました。