回答編集履歴

4

加筆修正

2017/04/18 07:42

投稿

退会済みユーザー
test CHANGED
@@ -56,6 +56,10 @@
56
56
 
57
57
  今回のコードはbindValue()が適切です。
58
58
 
59
+ bindParam()と間違えて書いた箇所がNULLとして扱われ、
60
+
61
+ テーブルのNULL禁止に引っかかって反映されない、みたいな話なのかなと。
62
+
59
63
 
60
64
 
61
65
 

3

加筆修正

2017/04/18 07:42

投稿

退会済みユーザー
test CHANGED
@@ -27,6 +27,36 @@
27
27
  $keyword = htmlspecialchars($_POST["keyword"]);
28
28
 
29
29
  ```
30
+
31
+
32
+
33
+ さらに、
34
+
35
+ [PHP: PDOStatement::bindValue - Manual](http://php.net/manual/ja/pdostatement.bindvalue.php)
36
+
37
+ [PHP: PDOStatement::bindParam - Manual](http://php.net/manual/ja/pdostatement.bindparam.php)
38
+
39
+ bindValue()するところで、上記リファレンスページの例1の事例に習うと
40
+
41
+ ```php
42
+
43
+ $stmt->bindValue(':maker_id', $maker_id);
44
+
45
+ $stmt->bindValue(':item_name', $item_name);
46
+
47
+ $stmt->bindValue(':price', $price);
48
+
49
+ $stmt->bindValue(':keyword', $keyword);
50
+
51
+ ```
52
+
53
+ となりそうです。
54
+
55
+ bindParam()は**SELECT文の実行結果を受け取るための変数のバインド**であって、
56
+
57
+ 今回のコードはbindValue()が適切です。
58
+
59
+
30
60
 
31
61
 
32
62
 

2

加筆修正

2017/04/18 07:39

投稿

退会済みユーザー
test CHANGED
@@ -43,3 +43,29 @@
43
43
  それもフォーム上で入力させるんですか?
44
44
 
45
45
  番号がかぶったりしても平気なのでしょうか。
46
+
47
+
48
+
49
+ 【追記】
50
+
51
+ ちゃんとINSERT INTO文が動くかの確認として、
52
+
53
+ `$stmt->execute();`の直前にでも、
54
+
55
+ ```php
56
+
57
+ var_dump($maker_id);
58
+
59
+ var_dump($item_name);
60
+
61
+ var_dump($price);
62
+
63
+ var_dump($keyword);
64
+
65
+ ```
66
+
67
+ を入れてみたり、また、`$pdo = new PDO(~`の直後にでも
68
+
69
+ SELECT文のクエリーを実行して値の取得ができるかを確認するとか。
70
+
71
+

1

加筆修正

2017/04/18 07:32

投稿

退会済みユーザー
test CHANGED
@@ -6,9 +6,15 @@
6
6
 
7
7
  commit()してない。
8
8
 
9
+ [PHP: PDO::beginTransaction - Manual](http://php.net/manual/ja/pdo.begintransaction.php)
10
+
11
+ beginTransaction()していなければ、オートコミットが働いてDBに反映されるはずかもしれませんが、一応動作モードを確認しておいたほうが良いかも。
12
+
9
13
 
10
14
 
11
15
  $_POSTを参照してデータ抽出する箇所が、何かおかしい。
16
+
17
+ こうなんじゃない?
12
18
 
13
19
  ```php
14
20
 
@@ -28,6 +34,8 @@
28
34
 
29
35
  省略してはいけないカラムがあるのにNULLもしくは空文字列でINSERTしようとしているとか。
30
36
 
37
+ **テーブルの構造も示して**くれれば原因究明につながりやすいかも。
38
+
31
39
 
32
40
 
33
41
  ところで、`$maker_id`がテーブルでの主キーになりそうな気がしますが、