データベース

PHPでPDOを使ってSQLSTATEエラーが出た時にやるべきこと!

データベース

プログラミング初心者の方は開発をしている中で様々なエラーに出会うかと思います。
その中にはSQLSTATEと書かれたエラー文もあるのではないでしょうか。
ここではSQLSTATEエラーが出た際のまず最初にやるべきシンプルな対処法を紹介します。

SQLSTATEはどんなエラー?

ではまず、SQLSTATEエラーとは一体何なのでしょうか?
結論からいうとSQLSTATEエラーはその名の通りSQL文のエラーです。
外部からDB(データベース)に接続しデータの取得や追加、更新など行う場合に発生する可能性があるエラーです。

この画像には alt 属性が指定されておらず、ファイル名は laravel-crud1-1024x368.png です


特に、SQL文が複雑になればなるほどこのエラーに出会う確率が高くなります。
しかし、実際にこのエラーに出会うと何度コードを見直してもどこが間違っているのかわからないなんてこともあります。
では一体どのようにエラーの原因を見つければ良いのでしょうか?

シンプルな対処法

まず最初にやるべき一番シンプルな対処法は実際にDBでSQL文を実行してみることです。
外部からDBに接続している場合「どこのSQL文が間違っているか」は教えてくれますが、「SQL文の何が間違っているか」までは教えてくれません。
そこでDBでSQL文を実行してみることで「SQL文の何が間違っているか」を教えてくれますし、改めて書いてみることで自分自身が気づくこともあります。
では、実際の例を見ていきましょう。

実際の例

例えば、以下のようなデータがDBのusersテーブルに存在するとします。

<usersテーブル>

IDnameage
1太郎20
2花子21

このusersテーブルからIDが1のnameとageを取得します。

$query = "SELECT neme, age FROM users WHERE id = 1";

このSQL文のどこが間違っているのか分かるでしょうか?
おそらくこのまま実行するとSQLSTATEのエラーが表示されるかと思います。
では、実際にDBにこのSQL文を投げてみましょう。
するとこのようなエラーが出てきました。

Unknown column ‘neme’ in ‘field list’

カラム名が「name」ではなく「neme」になっていたんですね。
この程度なら気づくと思いがちですが実際に開発していると気づかないことも多く、SQL文が長くなればより気付きにくくなります。
悩む時間を短くするためにもSQLSTATEエラーにぶつかった際にはぜひこの方法を活用してみてください。

まとめ

エラー文を読めるようになるとそれだけで作業スピードが格段に上がります。
一つ一つのエラーが全く別物というわけではないので、ある程度エラー文と対処法を覚えておくと良いかもしれません。

タイトルとURLをコピーしました