//tips
//php理解
Phpでの基本的なデータベース処理を確認していく。ショッピングサイトでは、顧客の住所や購買履歴、商品情報などを管理するためにデータベースが使われている。
データベースの中でも広く利用される形式がリレーショナルデータベースでエクセルの表のようなテーブルに相当する。
SQLはこのテーブルを操作するためのプログラミング言語で、テーブル作成、データ追加、検索などができる。
SQLの内容を見ていくことにする。
Shopデータベースが既にある場合はそれを削除。
drop database if exists shop;
drop databaseはデータベースを削除するSQLコマンドで、ダウンロードと勘違いしない。
次は、shopデータベースの新規作成。
create database shop default character set utf8 collate utf8_general_ci;
create database shopの後にあるdefault character setはデータベースで用いる文字コードを表す。基本的にはutf-8で問題ない。
collateは行を並べる順番を決める方式を表し、utf_general_ciという方式を採用している。
続いて、shopデータベースを使用するためのユーザーを作成。利用権限を与える部分。
grant all on shop.* to ‘staff’@‘localhost’ identified by ‘password’;
grantで権限を与えることができ、指定したユーザが存在しない場合には新たにユーザの作成も行える。
all on shop.*はshopデータベースの全てのテーブルに対しての権限を与えている。
to 以降は、ユーザ名とホスト名を表し、localhostにおけるstaffというユーザを指定している‘staff’@‘localhost’。staffというユーザが既に存在する場合は権限を設定し、存在しない場合は、新規にユーザを作成し、権限も付与する。
identified by以下はユーザがデータベースにログインするためのパスワード。
この作成したデータベースへの接続は、use shop;で行い、useはデータベースに接続するためのコマンドとなる。
ここまでで、Shopデータベースとstaffユーザー、接続するためのパスワードを作成し、shopデータベースに接続したことになる。
Shopデータベースの中には何も入っていないので、テーブルを作成していく。
create table product(
id int auto_increment primary key,
name varchar(200) not null,
price int not null
);
1番目の列を作成。
id int auto_increment primary key,
のidは列の名前、intは列のデータ型。auto_incrementは行を追加すると自動的に加算される。primary keyは行ごとに異なる値を割り当て行を一意に識別できるようにするもの。
2番目の列を作成。
name varchar(200) not null,
列の名前はname、型はvarchar(200)。varcharは可変長の文字列で最大長を200文字列にしている。ただ、文字数は文字の種類によって異なる点には注意。
not bullはこの列をnullにしてはいけないという制約条件で、値の設定を必須としている。
3番目の列を作成。この列は価格を表すので列名はprice、型はint。
price int not null
これによりshopデータベースの中のproductテーブルにid,name,priceの列を追加することができた。{}の中を,で区切ることで各列を分けて挿入することができることがわかる。
product tableの中に商品データを追加していく。
insert into product values(null,’松の実’,700);
insert intoは指定したテーブルに新しい行を追加するためのコマンド。追加データはvalues…のように記述する。()の内部には各列の設定データを,で区切って指定する。
null,’松の実’,700
だが、1列目はauto_incrementを指定しているので自動的に番号を割り振られるのでnullで問題ない。
作成したprpductテーブルでSQLを使用した操作を確認していく。
select * from product;
これはselect文を使用して指定したテーブルを選択する。
select 列名 from テーブル名;
これにより指定したテーブルの指定した列を取得することができる。
*は全ての列を指定するのでselect * from product;はproductテーブルの全ての列を取得することになる。
指定したい列だけを取得したい場合には列名を指定する。
これらをベースにPhpからデータベースを操作する。
Phpからデータベースに接続するにはPDOと呼ばれる機能を使う。PDOはPHPとデータベースとの間の接続機能を提供する。
PDOはクラスの一種で、データベースを操作するための変数や関数がまとめて定義されている。
$pdo=new PDO(…);
mysqlはmysqlへの接続を表し、:移行に接続に必要な情報を;で区切って並べる。
host=localhostはmysqlがlocalhostに存在することを表す。dbnameはそのままshopデータベースを代入。あとは文字コードをutf8にしている。
<?php
$pdo=new PDO(‘mysql:host=localhost;dbname=shop;charset=utf-8’,’staff’,’password’);
?>