どうも、こんにちは。
Amazonのapiを叩いていて、一部MySQLにそもそもinsertされていない現象が生じていました。
なぜだろうと調べてみると、そもそもapiのjsonの値がない場合がありました。
変数には何も入っていない状況です。
そのような場合変数にはシングルクォーテーションもついていません。
調べてみるとこのような場合はそもそもinsertができないようです。
そこで、変数にif(empty($hoge))で空の場合には$hoge = 0などになるように場合分けをして何らかの値を入れてあげると無事にinsertできるようになりました。
もしもinsertができない場合や時々できない場合など挙動が不安定な場合はこの空を疑ってみてください。
目次
MySQLでの文字列リテラルはシングルクォーテーションで囲む
変数に代入される値や文字列のことをリテラルと言います。
そして、MySQLで登録する文字列リテラルはシングルクォーテーションで囲むというルールがあります。
なので、空文字であっても、$hoge = ” のようにシングルクォーテーションで囲まないといけません。
今回私のミスは常に変数には数字が格納されるものだと思い込んでいて、初めから値がない場合を想定していなかったところにあります。
もしも数値が与えられるのならそれで良いのですが、そもそも無い場合まで考えつかなったというミスでした。
結構忙しい時はこういう部分を疎かにしがちだし、ミスに気付きにくくエラーの原因が分かりにくいので勉強になりました。
コメント