EC2上でCSVファイルのデータをRDS(mysql)に挿入しようとしているのですが、連想配列の値をbindvalueの変数に格納できずうまくinsertクエリを実行できずにいます。
DBへの接続は完了済みです。
なんとかネットを参照にもう少し粘りたいのですが、期限があるためお力をお借頂きたいです。
CSVファイル内のデータの取得の完了はvar_dumpで確認できてます。
データの中身はこんな感じです。
[5]=> array(2) { ["line_id"]=> string(33) "*********" ["username"]=> string(12) "*********" } コード
以下のコードを実行すると以下のデータがないですよとエラー出ます。
PHP Fatal error: Uncaught PDOException: SQLSTATE[23000]: Integrity constraint violation: 1048 Column 'line_id' cannot be null in /home/ec2-user/index2.php:28 Stack trace: #0 /home/ec2-user/index2.php(28): PDOStatement->execute() #1 {main} thrown in /home/ec2-user/index2.php on line 28
<?php // DB connect $pdo = new PDO( 'mysql:host=************', '********', '*********', [ PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION, PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC, ] ); // CSV read $file = new SplFileObject('/tmp/******.csv'); $file->setFlags(SplFileObject::READ_CSV); $insert_array = []; foreach ($file as $line) { $insert_array[] = [ 'line_id' => $line[0], 'username' => $line[1], ]; } foreach($insert_array as $insert_arrays); { $stmt = $pdo->prepare("INSERT INTO users (line_id, name) VALUES (:lineid, :username)"); $stmt->bindValue(':lineid', $line_id[0], PDO::PARAM_STR); $stmt->bindValue(':username', $line_id[1], PDO::PARAM_STR); $stmt->execute(); } $pdo->commit(); ?> コード
また、調べると以下のように連想配列の出力はこのようにキーと値で
組むと説明している物もあったのですが、うまく
当てはめれず、上記同様に変数がnullと出てしまいました。
foreach($fruits as $key => $value){ }
回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/12/04 06:06