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(データベース)の基本となるCRUD(クラッド)について理解ができたら次によりデータベースを活用する方法を学びましょう。

 

データベースの活用というと、その多くは登録されたデータをどのように利用するのかということになります。
つまり、欲しいデータをどう絞り込むかということですね。
IDのように一つしかないもの、いくつかの条件で抽出するものなど用途に応じて抽出方法は違ってきます。
ここで紹介するクエリ(命令文)を知れば大概の欲しい情報は引き出せるようになりますので是非、チャレンジしてください!

 

参考例として『Chapter 3 - SQLite(データベース)を作る』でも紹介しました表を使って説明していきます。

ID(Key)

name

home

year

1

大島優子

栃木県

1988

2

島崎遥香

埼玉県

1994

3

松井珠理奈

愛知県

1997

4

渡辺麻友

埼玉県

1994

5

指原梨乃

大分県

1992

6

柏木由紀

鹿児島県

1991

7

高橋みなみ

東京都

1991

8

川栄利奈

神奈川県

1995

9

小嶋陽菜

埼玉県

1988

10

横山由依

京都府

1992

ファイル名を "test.db" 、テーブル名を "personal" とします。
データベースへのアクセス方法は、『Chapter 3 - SQLiteの基本動作』を参照してください。

 

全データを取得するには次のクエリになります。
データベースには、既に$dbで接続したものとして説明していきます。

$db->query("SELECT * FROM personal");

この場合、昇順で ID 1~10までのデータが全て読み込まれます。

降順にしたい場合には、

$db->query("SELECT * FROM personal ORDER BY ID DESC");

とします。
"ORDER BY ID DESC" を付け加えることで降順に並び替えられて情報は読み込まれていきます。
このクエリでは、ID のカラムを基準に降順させています。

ブログや掲示板などプログラムで最新情報を取り出す手段としても使えますね。

仮に year を基準にすると、1988~1997年で降順でソートされます。

 

データの書き出しについては、『Chapter 3 - SQLiteの基本動作』の database.php、30~38行を参考にしてください。

 

条件式を加えたいときには次のようにします。

$db->query("SELECT * FROM personal WHERE home='埼玉' ORDER BY ID DESC");

この式では、home のカテゴリで "埼玉県" のデータを降順で抽出します。
逆に、

$db->query("SELECT * FROM personal WHERE home!='埼玉'");

とすると、"埼玉県" 以外のデータを昇順で抽出します。

 

次にリミットを付けたい場合には、

$db->query("SELECT * FROM personal WHERE home='埼玉' ORDER BY ID DESC LIMIT 2");

とすることで、home のカテゴリで "埼玉県" のデータを2件、降順で抽出します。 3行目からは読み込みをしません。

 

次に複数の条件で抽出する場合には、

$db->query("SELECT * FROM personal WHERE year='1988' or year='1994'");

とすることで、year のカテゴリで "1988""1994" のデータを昇順で抽出します。

$db->query("SELECT * FROM personal WHERE home='埼玉県' AND year='1994'");

とすると、home のカテゴリで "埼玉県"year のカテゴリで "1994" 両方の条件に合うデータを昇順で抽出します。

 

ランダムにリミットを付けて抽出したいときには、

$db->query("SELECT * FROM personal order by random() limit 5");

この様にするとランダムで5件、昇順で抽出されます。

 

件数をカウントしたいときには、

$stmt = $db->query("SELECT * FROM personal");
$result = count($stmt->fetchAll());
$stmt->execute();

とします。
データを格納した変数、ここでは $stmt をカウント関数でカウントし、$resul にその値を代入しています。
最後、データを格納した変数を execute をしなければ挙動がおかしくなります。
何故だかわかりわかりませんが、もう少し簡単なやり方があるかもしれません。
後に解決できましたら記述したいと思います。

件数のカウントは、全登録数、関連するデータ数、検索結果数などを知りたいときや、ページャー(ページ送り)を作るときに利用することになります。

 

 

DB練習問題

 

 

 

 

 

 

 

 

 

 

 

 

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

▲UP

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