前の節でMySQLサーバに存在するデータベースへ接続できるようになりましたが,それだけでは意味がありません。 接続したデータベースに対して操作ができるようになって,はじめてデータベースと接続した意味が出てきます。この節では,PHPスクリプトからSQL命令を実行できるようにしましょう。
作成したSQL命令を文字列にしたものをSQL文を呼びます。このSQL文を実行するファンクションがmysqli_query
です。
animal
テーブルに
id | name | size |
---|---|---|
4 | クジラ | 2000 |
14行目でエラーが出なければ15行目の「データを挿入しました」というメッセージがブラウザ画面に出てきます。
正しく動作していれば,データベースにデータが挿入されている筈ですので,phpMyAdminで確認してみましょう。今回はid = 4
にクジラ
を挿入したので,これを確認できれば大丈夫です。
成功が確認できたら,もう一度下記のINSERT文を実行してみましょう。
ブラウザ画面
phpMyAdmin画面
新しくネコが挿入されているのなら成功です。
次にUPDATE文を実行してみましょう。
ブラウザ画面
phpMyAdmin画面
ネコがイヌに変更されているなら成功です。
最後にDELETE文を実行してみましょう。
ブラウザ画面
phpMyAdmin画面
イヌのデータが消えていれば成功です。
以上で,PHPを利用してのデータの挿入,更新,削除操作の基本は完了です。
フォーム入力データを上記の事例に当てはめると,Webページ上で入力した値でデータベースのデータを自由に操作することができるようになります。
以上でSQL文を実行できることが確認できましたが,データを検索して引っ張り出すSELECT命令は注意が必要です。SELECT命令の引数を不用意に設定すると,条件次第ですべてのデータが引き出されてしまいます。
SELECT命令を実行した結果を取り出すにはmysqli_fetch関数グループ
を使います。ここではフィールド名(カラム名)を引数とする連想配列として取り出すmysqli_fetch_assoc
ファンクションを使います。
実行結果
SELECTは結果が戻り値として帰ってくるので,これを変数$recordSet
に保存します。
レコードセットを連想配列に直して取り出すmysqli_fetch_assoc
という専用のファンクションが用意されていますので,これを使って連想配列$data
に取り出し,printもしくはecho文で表示させます。
連想配列はテーブルのカラム名(フィールド名)がインデックスになっていますので,echoで表示する時には次のように指定します。
先ほどまでの方法では表示される結果が1件のみであり,SELECTの本来の結果を引き出したことにはなりません。
SELECTは条件にあてはまるものをすべて表示させるのが正しい使い方なので,該当結果の2件目以降も表示させなければなりません。
そのためにはmysqli_fetch_assoc
ファンクションを繰り返し使うことになります。下記の例は2回呼び出して2行分のデータを表示しています。
実行結果
2行以上のデータをデータを表示してみましょう。
実行方法としてはwhile分を利用して,繰り返しmysqli_fetch_assocを実行させることで,該当件数が終了するまで 変数に代入し表示させることができるようになります。
実行結果