PHPでMySQLのデータ操作その1
PHPでMySQLを操作する方法を備忘録も兼ねてまとめました。
まずこのようなデータを作成、用意します。
架空のフットサルチームがあるとします。
id | name | age | position |
---|---|---|---|
選手id | 選手名 | 選手の年齢 | 選手のポジション |
.sql
-- futsal_teamというデータベース(がなければ)作成。IF NOT EXISTSで判断。
CREATE DATABASE IF NOT EXISTS futsal_team DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;
-- GRANT文で権限をユーザーに付与、ユーザーはfutsal_team内の全てのテーブルを操作できる。
GRANT ALL PRIVILEGES ON *.* TO 'bs_user'@'localhost' IDENTIFIED BY 'futsal_team';
FLUSH PRIVILEGES;
-- データベースfutsal_team使用。
USE futsal_team;
.sql
-- テーブル作成後、カラム設定。
CREATE TABLE futsal_a (
id integer AUTO_INCREMENT NOT NULL,
name varchar(255) NOT NULL,
age integer NOT NULL,
position varchar(255) NOT NULL,
PRIMARY KEY (id)
);
.sql
-- カラムにそれぞれ値を入れてレコードを作成。idはシーケンス番号がauto_incrementオプションの効果で自動で追加される。
INSERT INTO futsal_a VALUES (null, '加藤A太郎', 25, 'ピヴォ');
INSERT INTO futsal_a VALUES (null, '佐藤B次郎', 27, 'アラ');
INSERT INTO futsal_a VALUES (null, '田中C三郎', 32, 'アラ');
INSERT INTO futsal_a VALUES (null, '山本D五郎', 38, 'フィクソ');
INSERT INTO futsal_a VALUES (null, '中島E十郎', 30, 'ゴレイロ);
データの一覧表示
.php
<?php require './header.php'?>
<?php
//今回は外部で$user, $passwordを設定してrequireで呼び出している。
require './ft_person.php';
//例外処理のためにtry carch文使用。
try {
echo '<h1>','Aチームメンバー','</h1>';
echo '<table>';
echo '<tbody>';
//データベースにアクセスするためにPDOクラスのインスタンスをnew演算子で作成する。
$ft_team=new PDO('mysql:host=localhost;dbname=futsal_team;charset=utf8',
$user, $password);
/*
PDOクラスのインスタンスからqueryセレクタを使用し、SQL文でfutsal_aの全データ取得。
その後、foreach文とecho文を用いてデータを全て表示。
*/
foreach ($ft_team->query('SELECT * FROM futsal_a') as $person) {
echo '<tr>';
echo '<td>','番号:',$person['id'],'、','</td>';
echo '<td>','名前:',$person['name'],'、','</td>';
echo '<td>','年齢:',$person['age'],'歳','、','</td>';
echo '<td>','ポジション:',$person['position'],'</td>';
echo '</tr>';
}
echo '</tbody>';
echo '</table>';
} catch(PDOException $e){
echo $e->getMessage();
exit;
}
//結果
/*
番号:1、 名前:加藤A太郎、 年齢:25歳、 ポジション:ピヴォ
番号:2、 名前:佐藤B次郎、 年齢:27歳、 ポジション:アラ
番号:3、 名前:田中C三郎、 年齢:32歳、 ポジション:アラ
番号:4、 名前:山本D五郎、 年齢:38歳、 ポジション:フィクソ
番号:5、 名前:中島E十郎、 年齢:30歳、 ポジション:ゴレイロ
*/
?>
<?php require './footer.php'?>
PDOというクラスをインスタンス化することで、PHPでデータベースに接続しSQL文で操作ができるようになります。
さらには専用のメソッドを使用することで、検索機能など使えるようになります。
その2に続く