質問: 素人です!まる2日ネットで様々検索しましたが、分からりませんでした。 こちらのサイトでは時々お世話になっております。 極力自力解決したいのですが、かれこれ2日程考えこんでおり、 ついに諦めてこちらのサイトに助けを求めました。 MysqlのPDOで複数のデータをデータベースに入れたいのですができずに困っています。 データベースにデータが無い時はINSETでデータがある時はUPDATEにしたいです。 INSERT ... ON DUPLICATE KEY UPDATE 構文を使えばよいと言うのは分かるのですが、 現在はそれ以前の問題でINSERTすらできません。 単純なプリペアードステートメントであれば、問題無くインサートできますが 今回のINSERTはなかなか難しいです。 何かヒントになることがございましたら、是非ご指導お願いしたします。 人数は40名程 1人に入れるデーター数は20件程です。 A氏:データ1、データ2、・・・・データ20 B氏:データ1、データ2、・・・・データ20 C氏:データ1、データ2、・・・・データ20 ・ ・ ・ Z氏:データ1、データ2、・・・・データ20 こんな感じです。 データの入力フォームは、ちょうどエクセルの様な格子状になったフォームから 40人分を入力します。 全データをPOSTして、確認画面でSESSION変数に入れました。 決定画面でそのSESSIONに入った40人分のデータをMysqlにINSERTしたいのですが。 SESSIONに入っているデータはこんな感じです。 $_SESSION['simei_a']、$_SESSION['simei_b']、$_SESSION['simei_c']・・・・ $_SESSION['bangou_a']、$_SESSION['bangou_b']、$_SESSION['bangou_c']・・・ $_SESSION['address_a']、$_SESSION['address_b']、$_SESSION['address_c']・・・ このデータは配列にした方が良いのでしょうか? ・ ・ ・ ・ ・ ※PDOでのデータベースへの接続は出来ています。 ※テストで配列変数を使わないで、VALUES('いちご','りんご','バナナ')とすればインサートできます。 ※$pdoはPDOのインスタンスになります。 $pdo=DBconect(); $stmt=$pdo->prepare("INSERT INTO hogehoge (AAAAA,BBBBB,CCCCC,・・・・・) VALUES (:XXXX :YYYY :ZZZZ ・・・・・)"); foreach ( ?分からない ) { $stmt->execute( ?分からない ); } ドライバーオプションは静的プレースホルダを選んでいます。 $DRIVER_OPTIONS= [ PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,//PDO::ERRMODE_EXCEPTION PDO::ATTR_EMULATE_PREPARES => false, ]; エラー表示は次の通りです。 Uncaught PDOException: SQLSTATE[HY093]: Invalid parameter number: parameter was not defined in 現在上の様なコードを書き、色々と手探りで試してみていますができませんでした。 宜しくご指導お願いいたします。
回答: PHPマニュアルやらネットやら、色々調べて散々アチコチいじりましが、結局原因はデータベースのカラム名にアンダーバーを使っていてそれが原因でした。何とか解決できました。お世話になりました。