PHPを学ぼう!

▼PHPを学ぶチャプターです。


安心サポートのGOG!

 

素材メニュー

 ◆Chapter 1

 ◆Chapter 2

 ◆Chapter 3

 ◆Chapter 4

 

制作ヒント

 ◆制作のヒント

 

レッスンメニュー

 ◆Chapter2 練習問題

 ◆Chapter3 DB練習問題

 

サイト運営者がPHPを学んだ
お勧めの書籍です!
これ一冊で基本的なPHPの仕組み、簡単なプログラムの作成、SQLiteを使ったデータベースなどかなり学べる要素が詰まっています!

↓↓↓ ↓↓↓

PHPレッスンブック―PHP5対応

新品価格
¥2,520から
(2013/2/24 04:38時点)

 

 

サイバーテロの技法について書かれた書籍です!
ハッカーの手法を知ることでご自身のサイトがハッカーに攻撃されたときそれを防ぐ手法を紹介しています。

↓↓↓ ↓↓↓

PHPサイバーテロの技法―攻撃と防御の実際

新品価格
¥1,890から
(2013/11/5 10:09時点)

 

 

★初年度100円! サブドメインやメールアカウントを無制限に設置できます。
PHPやCGIは勿論、WordPress、Movable Type Open Source、掲示板、ブログ、ショッピングサイトなどが簡単に導入できるので複数サイトを運営したい場合に便利なサービスです。

↓↓↓ ↓↓↓

 

PHPが動作するサーバー

 

はじめての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='鹿児島県';

このコードでは、"埼玉県" と "鹿児島県" の出身者が抽出されるようになります。

 

 

DB練習問題

 

 

 

 

 

 

 

 

 

 

 

 

ex-mode.net | ツールEX | 素材EX | アフィモール | 初級者向 初めてのホームページ作り | Htmlタグ辞典 | 初めてのプランター菜園 | リンク・ボード
気のみ気のままなブログ | CSSガイドEX | ホビ★コレ | 班長日記!

▲UP

Copyright (C) ex-mode.net 2017. All Rights Reserved.