PHP+MySQLの組み合わせ
カテゴリ:インターン生ブログ
こんにちは!インターン生の西です!今回はPHPを使ってMySQLに接続し、簡単にSQLを実行していく流れを紹介していきたいと思います。
1.PDOでMySQLに接続する
PDOとは、PHP Data Objectsの略称でPHPからデータベースに接続することが目的とされています。
・PDOの記述
![](https://inglow.jp/wordpress/wp-content/uploads/2020/05/695868ddf21f496da1d7d71ab70f7911-1-1024x190.png)
PDOの記述としては画像のようになります。しかし、このような記述だけだとユーザー名を間違えてしまった場合などに「Fatal error」が起きてしまい、プログラムがまったく動作しなくなります。それを防ぐためには次の項目の例外処理が必要なのです。
・例外処理
データベースに接続する前に、スクリプトを実行したときにデータベースが存在しない、読み込もうとしたファイルが存在しないなどのエラーが発生しても正常にスクリプトが動作するようにすることを例外処理といいます。例外処理の構文は以下のようになります。
![](https://inglow.jp/wordpress/wp-content/uploads/2020/05/f2bc17b9aa6060c66cd2ff9e2583f038.png)
この構文では、接続が上手くいかなかった場合、例外クラス名が例外を受け取る変数名に例外を投げ、その変数の中身を画面に出力する、という流れになります。なお、PHPには最初から「Exception」という例外クラスがあります。なので、さきほどの画像を例にとると以下のようになります。
![](https://inglow.jp/wordpress/wp-content/uploads/2020/05/35044d05c47b719fbee40cb2eca07ca3-1024x292.png)
PDOによるMySQLへの接続は以上になります。
2.SQLを実行する(データ削除)
・Delete文
Delete文では、データベースを削除することができます。今回はDelete文を使ったMySQLのデータ削除方法を紹介していきたいと思います。
![](https://inglow.jp/wordpress/wp-content/uploads/2020/05/4ed7bf764bb1cf84e372067f492bdec1.png)
「DELETE FROM」の後にテーブル名を指定し、「WHERE」で削除するレコードのフィールド名と値を指定していきます。それでは、PDOでDELETE文を使ってデータを削除する流れを見ていきましょう。
・データ削除の流れ
![](https://inglow.jp/wordpress/wp-content/uploads/2020/05/bc6762640bfde96ce3dc4d86a458c75d.png)
まず、Delete文を変数に格納する。この時にプレースホルダと呼ばれる:idを値を入れるための空箱として利用する。次に、SQL文をprepare()にセットし、削除したいレコードのIDの番号を配列に入れる。そして、execute()でSQLを実行し、データベースの削除をする。最後に、削除後の表示画面に出力される文をechoで記述する流れになります。
・気を付けること
以上のようにデータベースを扱うときに注意すべき点として、ユーザデータを利用したSQL文の構築があげられます。例えば、passwordにクォート文字や任意のSQLを入れることで想定外のクエリを実行できてしまいます。その対策としては、今回述べたようなPDOなどで、値についてはプレースホルダで渡す方法が望ましいでしょう。