質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Q&A

解決済

1回答

3285閲覧

インサートを行いたいが値が入らない

退会済みユーザー

退会済みユーザー

総合スコア0

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

0グッド

0クリップ

投稿2017/09/10 10:17

編集2017/09/10 11:58

###わからないこと
現在バルクインサートを作成しておりますが、値をDB内に入れることができておりません。
エラーを発生していないので、その原因についてつかみかねております。
どうかご教授いただけないでしょうか?

###コード

php

1public function savemeta($project) 2 { 3 $data = date('Y-m-d H:i:s'); 4 $stmt = self::$_pdo->prepare("INSERT INTO ct_meta ( 5 item_id, 6 value, 7 created_at, 8 updated_at 9 ) 10 VALUES 11 ( 12 :item_id, 13 :value, 14 :created_at, 15 :updated_at)" 16 ); 17 $jmetaValues[] = array('item_id' => 1, 'value' => $project['jobType']); 18 $jmetaValues[] = array('item_id' => 3, 'value' => $project['jobDescription']); 19 $jmetaValues[] = array('item_id' => 4, 'value' => $project['ensen']); 20 $jmetaValues[] = array('item_id' => 5, 'value' => $project['place']); 21 $jmetaValues[] = array('item_id' => 6, 'value' => $project['fee']); 22 $jmetaValues[] = array('item_id' => 7, 'value' => $project['commutingAllowance']); 23 $jmetaValues[] = array('item_id' => 8, 'value' => $project['workDays']); 24 $jmetaValues[] = array('item_id' => 9, 'value' => $project['weekday']); 25 $jmetaValues[] = array('item_id' => 10, 'value' => $project['workTime']); 26 27 foreach ($jmetaValues as $row) { 28 $stmt->bindParam('item_id', $row['item_id'], PDO::PARAM_STR); 29 $stmt->bindValue('value', $row['value'], PDO::PARAM_INT); 30 $stmt->bindParam('created_at', $date, PDO::PARAM_STR); 31 $stmt->bindParam('updated_at', $date, PDO::PARAM_STR); 32 $stmt->execute(); 33 }

###テーブル構造

php

1public function createCtJmetaTable() 2 { 3 $sql = "CREATE TABLE IF NOT EXISTS `ct_meta` (" 4 ."`id` int(10) unsigned NOT NULL AUTO_INCREMENT," 5 ."`job_id` bigint(20) unsigned NOT NULL," 6 ."`item_id` bigint(20) unsigned NOT NULL," 7 ."`value` longtext COLLATE utf8_unicode_ci NOT NULL," 8 ."`created_at` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00'," 9 ."`updated_at` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00'," 10 ."PRIMARY KEY (`id`)," 11 ."KEY `jmeta_job_id_foreign` (`job_id`)," 12 ."KEY `jmeta_jitem_id_foreign` (`item_id`)," 13 ."CONSTRAINT `jmeta_job_id_foreign` FOREIGN KEY (`job_id`) REFERENCES `ct_jobs` (`id`)" 14 .") ENGINE=InnoDB AUTO_INCREMENT=3102665 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;"; 15 $stmt = self::$_pdo->prepare($sql); 16 $stmt -> execute(); 17 }

###やりたいこと
DBにデータを保存することですが、データが入っているもののみを保存しようとしています。
しかし、$stmt->execute();にvar_dumpをかけたところ、falseが返ってきます。

①$projectがありますが、ちゃんと値が入っており、配列名も間違っておりません
②カラムはすべてプライマリではありません。

よろしくお願いいたします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

エラーが発生しない理由は分かりませんが、Not Null制約のあるjob_idをセットしていないからじゃないでしょうか?

適当な値を入れたそのInsert文を、コンソールで発行したら、エラーの詳細は分かると思います。

※尚、insert文を1行毎に発行しているので、これは、バルクインサートではありません。

投稿2017/09/10 11:40

編集2017/09/10 11:42
sazi

総合スコア25138

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2017/09/10 11:58

ご回答ありがとうございます。 仰る通り、NotNull制約を削除しましたら、値が入りました。 コンソールでの確認、次回より活用させていただきます。 ※バルクインサートではありませんでしたね。ちゃんと調べました。タイトルを変更いたします。
sazi

2017/09/10 12:44

job_idは外部キーの設定をしているので、Not Null制約外す場合の影響は確認された方が良いですよ。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問