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

回答編集履歴

2

修正

2019/02/21 00:57

投稿

m.ts10806
m.ts10806

スコア80890

answer CHANGED
@@ -5,4 +5,27 @@
5
5
 
6
6
  ちなみに。
7
7
  この手のエラーは**エラーメッセージにある行数ズバリよりもその直前の処理や処理結果**が原因で起きていることがよくあります。
8
- var_dump()などを効果的に利用し、デバッグする癖をつけると解決が早まります。
8
+ var_dump()などを効果的に利用し、デバッグする癖をつけると解決が早まります。
9
+
10
+ ----
11
+
12
+ 補足資料:
13
+ [MySQLの予約語とキーワード](https://qiita.com/hmatsu47/items/a1da0e06f0597acd6502)
14
+
15
+ 予約語にあがっているものはそもそもカラムには使えないと思って良いです。
16
+ [予約語っぽいけど例外的に認められているものもあります。](https://dev.mysql.com/doc/refman/5.6/ja/reserved-words.html)
17
+ > MySQL では、以前に多くの人々が使用していたので、一部のキーワードを引用符で囲まない識別子として使用することを許可しています。次の一覧に例を示します。
18
+ ACTION
19
+ BIT
20
+ DATE
21
+ ENUM
22
+ NO
23
+ TEXT
24
+ TIME
25
+ TIMESTAMP
26
+
27
+ ただ、「その名称だけで何のことかわかるか?」ということもありますし、
28
+ 紛らわしいので``をつけるだけではなく、きちんと用途や意味が伝わる名前(m6uさんが挙げてくれてますね)にすることを強くすすめます。
29
+
30
+ もし、その名称によって壁にあたってしまっているのなら、非常に勿体無いです。
31
+ idとかもあるかもしれませんが、単に`id`ではなくそれは「何のidか」が分かるようにするのが良いです。

1

追記

2019/02/21 00:57

投稿

m.ts10806
m.ts10806

スコア80890

answer CHANGED
@@ -1,4 +1,8 @@
1
1
  直前の$stmtをvar_dumpしてみては?
2
2
  PDO::prepareの返り値がstatementではなくfalseの場合、bindParamどころではないわけですし。
3
3
  その場合はPDO::prepareにセットしているSQLを見直す必要があります。
4
- 文法が合っているかとか存在しないカラム指定してないかとか。
4
+ 文法が合っているかとか存在しないカラム指定してないかとか。
5
+
6
+ ちなみに。
7
+ この手のエラーは**エラーメッセージにある行数ズバリよりもその直前の処理や処理結果**が原因で起きていることがよくあります。
8
+ var_dump()などを効果的に利用し、デバッグする癖をつけると解決が早まります。