EC2内のPHPファイルでCSVのデータをRDSに挿入するコードを書いてます。
CSVの読み取りとDBへの接続は完了済み。
ですが、いざクエリを実行すると以下のエラーが出ます
調べるとbindvalueの使い方に問題があると思うのですが、
修正箇所を見つけられないでいます。
もしエラーの原因箇所が分かる方がいらっしゃれば教えて頂きたいです。
エラー文 PHP Fatal error: Uncaught PDOException: SQLSTATE[HY093]: Invalid parameter number: parameter was not defined in /home/ec2-user/index.php:35 Stack trace: #0 /home/ec2-user/index.php(35): PDOStatement->execute() #1 {main} thrown in /home/ec2-user/index.php on line 35
CSVファイル&テーブル情報 【CSVファイル】(lineidは英数字の混合なのでbindvalueの引数にはintではなくstrを置いてます) ------------------- lineid | username | ------------------- 2222aaaa | tarou tanaka DB(usersテーブル) ------------------- id | line_id | name | -------------------
実行コード <?php try{ $pdo = new PDO( 'mysql**********', '******', '********', [ PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION, PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC, ] ); } catch(PDOException $e) { header('Content-Type: text/plain; charset=UTF-8', true, 500); exit($e->getMessage()); } header('Content-Type: text/html; charset=utf-8'); $file = new SplFileObject('/tmp/winneyuser.csv'); $file->setFlags(SplFileObject::READ_CSV); $insert_array = []; foreach ($file as $line) { $insert_array[] = [ 'line_id' => $line[0], 'username' => $line[1], ]; } $stmt = $pdo->prepare("INSERT INTO users (line_id, name) VALUES (:lineid, :username)"); $stmt->bindValue(':lineid', $line_id, PDO::PARAM_STR); $stmt->bindValue(':username', $username, PDO::PARAM_STR); foreach($insert_array as $insert_data) { $stmt->execute(); } $pdo->commit(); ?>
回答1件
あなたの回答
tips
プレビュー