teratail header banner
teratail header banner
質問するログイン新規登録

質問編集履歴

2

追記を記載

2020/04/04 11:04

投稿

ke_i
ke_i

スコア8

title CHANGED
File without changes
body CHANGED
@@ -52,4 +52,34 @@
52
52
  2つのテーブルに同時にinsertできれば解決できるのかと考え調べましたが、oracleはinsery allでできるようですがmysqlではそのような機能がないとわかったため断念しました。
53
53
 
54
54
  他にどのように調べれば解決できるのか、何が足りないのか、そもそも考え方が合っているかなどを教えていただいたいです。
55
- すみませんがアドバイスよろしくお願いします。
55
+ すみませんがアドバイスよろしくお願いします。
56
+
57
+ ### 追記
58
+ 現在のSQLコードになります。
59
+ ```
60
+ $sql = 'INSERT INTO articles (name, content, category_id, user_id, tag_id)
61
+ VALUES (:name, :content, :category_id, :user_id, :tag_id)';
62
+ $sth = $pdo -> prepare($sql);
63
+ $sth -> bindValue(':name', $_SESSION['title'],PDO::PARAM_STR);
64
+ $sth -> bindValue(':content', $_SESSION['contents'],PDO::PARAM_STR);
65
+ $sth -> bindValue(':category_id', $_SESSION['category_id'], PDO::PARAM_INT);
66
+ $sth -> bindValue(':user_id', $_SESSION['user_id'], PDO::PARAM_INT);
67
+ $sth -> bindValue(':tag_id', $_SESSION['tag_id'], PDO::PARAM_INT);
68
+ $sth -> execute();
69
+ ```
70
+ テーブル中身は以下になります。
71
+
72
+ - articles
73
+ ```
74
+ id, name, content, category_id, user_id, tag_id
75
+ ```
76
+
77
+ - article_tag
78
+ ```
79
+ article_id, tag_id
80
+ ```
81
+
82
+ - tags
83
+ ```
84
+ id, name
85
+ ```

1

名前付きと疑問符のsql文が逆になっていたため修正しております

2020/04/04 11:04

投稿

ke_i
ke_i

スコア8

title CHANGED
File without changes
body CHANGED
@@ -22,11 +22,11 @@
22
22
 
23
23
  疑問符プレースホルダーにした場合
24
24
  ```
25
- SQLSTATE[HY093]: Invalid parameter number: parameter was not defined
25
+ SQLSTATE[23000]: Integrity constraint violation: 1452 Cannot add or update a child row: a foreign key constraint fails (`blog`.`articles`, CONSTRAINT `articles_ibfk_3` FOREIGN KEY (`tag_id`) REFERENCES `tag_article` (`article_id`))
26
26
  ```
27
27
  名前付きプレースホルダーにした場合
28
28
  ```
29
- SQLSTATE[23000]: Integrity constraint violation: 1452 Cannot add or update a child row: a foreign key constraint fails (`blog`.`articles`, CONSTRAINT `articles_ibfk_3` FOREIGN KEY (`tag_id`) REFERENCES `tag_article` (`article_id`))
29
+ SQLSTATE[HY093]: Invalid parameter number: parameter was not defined
30
30
  ```
31
31
 
32
32
  ### 該当のソースコード