ただいまPHP+MySQLでシステム開発中です。試行錯誤しながらも徐々に完成しつつありますが、先日悩まされたトラブルで「特定のフィールドが表示されない」、またはデータが帰ってこないというのがありました。
念のため残しておきます。
問題になったフィールドは、MySQLデータベースのレコードが更新された際に、更新日時を記録する”timestamp型”にしたものでした。該当レコードを検索して降順にソートするSQLクエリをPHPの方から投げ込んでみるものの反応ナシ。これはおかしいと思い、別のフィールドを呼び出すと問題なく出力されてきました。
データベース管理には「phpMyAdmin」を使っていますので、ここから操作を行ってみます。こちらでは問題なく結果が出力されてきました。「phpMyAdmin」を使った事のある方なら分かると思いますが、操作に関するSQLクエリがそのまま表示されていますので、今度は出てきたSQLクエリをそのままコピーしてPHPの方に貼り付けてみましたが、やはり結果は同じで無反応…。
次にフィールド型に問題があるのかと思って、一般的な”varchar型”に変更してテストしてみました。ん〜でも結果は同じ。
データベースの破損かな〜と思って、今度は該当フィールドを削除して再制作してみましたが、やっぱりこれもダメでした。
もはやこの段階で2日ほど悩んでおりました。その日の夜、布団の中で延々と原因と解決方法を考え続けました…う〜〜〜〜ん…ウーーム…あ!!
なるほど原因は単純でした…フィールド名を「update」にしていたのです!
投げ込むSQLクエリを
SELECT * FROM テーブル名 ORDER BY update ASC
とプログラミングしておりましたので、SQLコマンドである「UPDATE」と被ってしまっていたのです。
通例にならって「`」は外していたのでエラーという事で無反応なのは当たり前ですねw
「phpMyAdmin」の方では、
SELECT * FROM `テーブル名` ORDER BY `update` ASC
と区切って吐き出していたので問題なかったようです。
もしもデータベース操作で特定のフィールドが表示されない場合には、フィールド名やテーブル名がSQLコマンドと被っていないことを確認しましょう!!