初心者が書いたphpからDBへSQL文を送るプログラムが動かない場合にやること
ITスキルアップキャンプの一期生がWebサービスを立ち上げているようで、めでたいですね……。
コードは書いても企業家的なスキルは本当にダメなのでうらやましいすごいでいっぱいです。
まあ、自分は目の前のもの完成させましょう。
その次はもうちょっと早くできるでしょ(輪講や研究が落ち着いたから……笑)。
で、今日は久しぶりにphpでDBへの問い合わせのプログラムを書いてみたのですが、
動くように書けたつもりでバグだらけだったという。
そのデバッグに時間がかかったので、チェック項目メモ。
初心者が書いたphpからDBへSQL文を送るプログラムが動かない場合にやること
①SQL文をechoなどで出力
特に変数がSQL文に入っている場合。クオーテーションの対応がなってなかったり、
半角スペースが抜けていたりして、よろしくないSQL文が出来ていることがあります。
②var_dumpでmysql_db_query()などクエリの実行結果を出力
そして、返り値と一緒にぐぐるとだれかが知恵袋で質問していたり、
ブログにまとめていたりすることがある。
③以前動いたことのあるコードをコピー&ペースト
人間の手入力を過信しない。
また、慣れてないと関数の引数の順番や種類を忘れてきちんと書けたつもりになってるということはよくある。
慣れてないうちは覚えるためにとにかく書きたいところだけれど。
(私の場合)
④返ってきた結果の取り出し方が分かってない
クエリを行った関数によって若干違うのですが、
$result = mysql_db_query("DB名","SQL文");
の$result['仮想配列の要素']としたらデータが取り出せる、と勘違いしていたり。
この場合、$resultはresourceという型の中に仮想配列があった変数であって仮想配列ではなく、
mysql_db_query()などでresourceからデータへアクセスする必要があります。
mysql...系は6月下旬あたりから廃止へ向かう流れになっているのですが、
とりあえず役割と失敗時の返り値について少し表にしておきます。
|
習ったときはmysql_db_query()で習ったのだけど、6月下旬に出たPHP5.5.xでは廃止の流れらしいことがわかって
流行はともかく、言語のバージョンアップには気をつけないとと思いました。
今回のは、ほとんどmysql→mysqliの置換で動くようなのでそれに書き換えたらいいのだけどね。
まだ、直したいけどそんなこと言ってたら完成しないので、
続きを作らなきゃ……。