はじめてのHP
| 無料素材
| タグ辞典
| CSSガイドEX
| PHPを学ぼう!
◆Chapter 3 - SQLiteの基本動作
SQLite(データベース)を操作するには SQL(命令文やコマンド)と呼ばれる言語を利用します。
この SQL 文はデータベースの構造を定義したり、データの作成(Create)、検索(Read)、修正(Update)、削除(Delete)など操作することができます。
この頭文字から「 CRUD(クラッド) 」と呼ばれています。
データベースを取り扱う基本操作は、この "CRUD" になります。
では最初にデータを作成(追加)する処理をしてみましょう。
作成するデータは次のものとします。
id |
name |
home |
year |
|
大家志津香 |
福岡県 |
1991 |
新たに登録するデータの "id" が空になっているのは、"id" が Primary Key(プライマリーキー)になっているためデータベースが自動で作成するからです。
登録するデータの変数を用意します。
$name = "大家志津香";
$home = "福岡県";
$year = "1991";
「Chapter3 SQLite(データベース)を作る」で作成した "database.php" のファイルを改変してデータを挿入してみましょう。
【database.php】
1|<?php
2|//新規作成データ
3|$name = "大家志津香";
4|$home = "福岡県";
5|$year = "1991";
6|
7|//データベースに接続する
8|try{
9| $db = new PDO("sqlite:test.db");
10|}catch(PDOException $e){
11| echo "データベースにアクセスできません".$e->getMessage();
12| exit;
13|}
14|
15|//データの挿入
16|$name = $db->quote($name);
17|$home = $db->quote($home);
18|//文字にクウォートを足す('...')
19|$year = intval($year);
20|$result = $db->exec(
21| "INSERT INTO personal(name, home, year)".
22| "VALUES($name, $home, $year)");
23|if($result === FALSE){
24| print_r($db->errorInfo());
25|}
26|
27|//データが追加されました。
28|echo "データが追加されました。<br />";
29|echo "【内 容】<br />";
30|$stmt = $db->query("SELECT * FROM personal");
31|while($row = $stmt->fetch()){
32| $id = $row["id"];
33| $name = $row["name"];
34| $home = $row["home"];
35| $year = $row["year"];
36| echo " ・[ID:{$id}] {$name}さんは、
37| {$year}年生まれの{$home}出身です。<br />\n";
38|}
39|?>
このファイルを実行すると新しい情報が追加されているのが確認できます。
ちなみブラウザをリロードすると同じ内容が次々と追加されますが、追加されたデータはこのコードでは新規扱いになります。
20行の "$db->exec" で9行目で指定したデータベースファイルへアクセスします。
21~22行がデータベースへ新規登録する SQL コマンドで次のようにデータを指定します。
INSERT INTO テーブル名(カラム1, カラム2, カラム3)
VALUES(データ1, データ2, データ3)
次に追加された "id=1" 、大島優子の生年を "2010" 年に修正するようコードに改変してみます。
1|<?php
2|//データ修正
3|$id=1;
4|$year = 2010;
5|
6|//データベースに接続する
7|try{
8| $db = new PDO("sqlite:test.db");
9|}catch(PDOException $e){
10| echo "データベースにアクセスできません".$e->getMessage();
11| exit;
12|}
13|
14|//データの修正
15|$result = $db->exec(
16| "UPDATE personal SET year=$year WHERE id=$id");
17|if($result === FALSE){
18| print_r($db->errorInfo());
19|}
20|
21|//データの表示
22|echo "データが修正されました。<br />";
23|echo "【内 容】<br />";
24|$stmt = $db->query("SELECT * FROM personal");
25|while($row = $stmt->fetch()){
26| $id = $row["id"];
27| $name = $row["name"];
28| $home = $row["home"];
29| $year = $row["year"];
30| echo " ・[ID:{$id}] {$name}さんは、
31| {$year}年生まれの{$home}出身です。<br />\n";
32|}
33|?>
16行目がデータベースのデータを更新する SQL コマンドです。
次のようにデータを指定します。
UPDATE テーブル名
SET 修正するカラム名
WHERE 条件式
今度は不要なデータを削除するコードに改変します。
"id=7" 高橋みなみのデータを削除してみます。
1|<?php
2|//データ削除
3|$id=7;
4|
5|//データベースに接続する
6|try{
7| $db = new PDO("sqlite:test.db");
8|}catch(PDOException $e){
9| echo "データベースにアクセスできません".$e->getMessage();
10| exit;
11|}
12|
13|//データの削除
14|$result = $db->exec(
15| "DELETE FROM personal WHERE id=$id;");
16|if($result === FALSE){
17| print_r($db->errorInfo());
18|}
19|
20|//データの表示
21|echo "データが削除されました。<br />";
22|echo "【内 容】<br />";
23|$stmt = $db->query("SELECT * FROM personal");
24|while($row = $stmt->fetch()){
25| $id = $row["id"];
26| $name = $row["name"];
27| $home = $row["home"];
28| $year = $row["year"];
29| echo " ・[ID:{$id}] {$name}さんは、
30|{$year}年生まれの{$home}出身です。<br />\n";
31|}
32|?>
15行目がデータベースから特定のデータを削除する SQL コマンドです。
次のようにデータを指定します。
DELETE FROM テーブル名 WHERE 条件式
最後に埼玉県出身の人を条件としてデータから抽出するコードに改変してみます。
1|<?php
2|//データの抽出
3|$home = "埼玉県";
4|
5|//データベースに接続する
61|try{
7| $db = new PDO("sqlite:test.db");
8|}catch(PDOException $e){
9| echo "データベースにアクセスできません".$e->getMessage();
10| exit;
11|}
12|
13|//データの表示
14|echo "出身地が{$home}の人のデータを抽出します。<br />";
15|echo "【内 容】<br />";
16|$stmt = $db->query("SELECT * FROM personal WHERE home='$home';");
17|while($row = $stmt->fetch()){
18| $id = $row["id"];
19| $name = $row["name"];
20| $home = $row["home"];
21| $year = $row["year"];
22| echo " ・[ID:{$id}] {$name}さんは、<br />
23|{$year}年生まれの{$home}出身です。<br />\n";
24|}
25|?>
データベースの検索については、登録・修正・削除とは違いデータベース内のデータを参照するだけとなります。
よって "CREATE"や"UPDATE"、"DELETE" のコマンドの様にデータベースを書き換える必要がありません。
16行目のように情報を引き出すコマンドだけでよくなります。
SELECT * FROM テーブル名 WHERE home=条件式
ここで注意してもらいたいのが条件式です。
普通なら、
SELECT * FROM personal WHERE home=$home;
でいいのではないかと思いますが、これではエラーが出てしまいます。
先にも述べましたがデータベースで扱う文字列については、クウォートを足す('...')設定をする必要があるのです。
ちなみに複数の条件式を入れる場合には次のとおりとなります。
SELECT * FROM personal WHERE home='$home' or home='鹿児島県';
このコードでは、"埼玉県" と "鹿児島県" の出身者が抽出されるようになります。

|