head image

index.phpの内容は以下の通りです。

<?php
1 $con = mysql_connect('localhost', 'root', '') or die('error(connect)');

2 mysql_select_db('test', $con) or die('error(select_db)');

3 $sql = 'select * from sample';
4 $result = mysql_query($sql, $con);

5 while ($row = mysql_fetch_array($result)) {
6 echo $row['id'] . ' : ' . $row['name'] . '<br />';
7 }

8 mysql_close($con);
?>

左端に記述されている数字は説明のためにつけた番号です、実際にindex.phpを記述する時には必要ありません。
何やら呪文のようなものが書かれていますが、そんなに気にすることはありません。

ゆっくり上から1行ずつ、意味を理解しながら覚えていってください。

1行目で、データベースに接続(connect)しています。
接続先はデータベースがあるホスト名です。今回は自分のパソコンに一式インストールしていますので
自分のローカルなパソコンがホスト名になる場際は、localhostがホスト名です。
ログインユーザーはrootユーザーですのでrootと記述します。
その上で
$con = mysql_connect('localhost', 'root', '')と記述しますと、localhostに対してrootユーザで
データベースに接続する接続情報を$conに代入(詰め込む)してくださいという意味になります。

データベースを利用する際は1度だけデータベースに接続要求をする必要があります。

データベースを使用しなくなる時にも1度だけデータベースを切断します。
8行目でmysql_close($con);と記述されている部分です。

このようにデータベースを使用するときは接続と切断は必ず必要になります。

2行目でtestデータベースを使用しています。
3行目でSQL文を記述した後実行しています。

5行目から7行目で、実際のデータが何件になるかわからないので、検索結果を繰り返し取得し表示しています。
while {
}
がある条件($row = mysql_fetch_array($result)を実行して検索結果が無くなるまで)になるまで繰り返し
実行されます。

mysql_fetch_array自体は検索結果データから1行づつ読み込みを行う命令です。


上記のindex.phpに修正して実行してみましょう(ブラウザでhttp://www.example.comにアクセスします)

1:PHP太郎
2:PHP花子

と表示されればOKです。

index.phpを修正して実行してみましょう。
最初はいきなり全部記述するのはハードルが高いと思われますので、まず、どんな命令がPHPで用意されているかを
紹介します。

・データベースの接続(connect): mysql_connect('host名', 'ログインユーザ名', '')
・データベースの切断(disconnect): mysql_close(コネクト時に確立されたセッション)
(コネクト時に確立されたセッションの意味は最初から理解するのは難しいので、コネクト(接続)時にデータベース
が利用できるように接続した印のようなものと覚えておいて良いでしょう)

・データベースtestの使用:mysql_select_db('データベース名',コネクト時に確立されたセッション)

・テーブルに対してのデータ操作:mysql_query('実行時クエリー',コネクト時に確立されたセッション)
(実行時クエリーの意味はテーブルに対して、たとえばある条件で検索してくださいと命令文を記述することです。)

ここではsample1テーブルに対して検索を行うので実行時クエリー(SQL文)は
・全部の行と列を検索するのであれば、select * from sample1 となります。
・sample1のuser_idだけを検索するのであれば、select user_id from sample1 となります。
・さらにsample1のuser_idが1のものだけを検索するのであれば、select * from sample1 where user_id = 1 となります。
これは、ほんの一例でデータベースに対するデータ操作はいろいろなことができますので、いろいろPHPの
中の実行時クエリー(SQL文)を書き換えて実行して確認してください。

さきほど、PHPのphpinfo()を使って画面に表示させるプログラムをサンプルとして紹介しましたが、
まずは、PHPでデータベースを検索したプログラムを書く前にPHPの基本としておさえておくポイントを
紹介します。

前述でも紹介しましたが、PHPでプログラムを書いていくためには基本となる規則があります。PHPに
限らずどんなプログラミング言語でも規則があり、構文規則があります。

さきほどのPHPの情報を表示させるサンプルプログラムも構文規則に沿っています。
<?php
phpinfo();
?>

・書き始めは <?php で始まり
・終了部分は?>
・phpinfo();はPHPがすでに用意しているPHPの情報を表示するプログラムですが、プログラムの
中からプログラムを呼び出し実行させるには呼び出すプログラム名を書きます。()の意味も実はあるのですが
ここではかえって難しくなるので、後で説明します。
そして、プログラムを実行する時でも他のことを実行する時でもPHPの場合は上から順番に命令が実行されて
いきます。

そして、命令の終わりには必ず ; (セミコロン)を付けます。

PHPの構文規則の基本としては、変数名には必ず $ (ドルマーク)を付ける規則があります。
変数名には数字を詰め込むこともできますし、文字列や他のデータ型の値を詰め込むこともできます。

例としてaという変数に数字の100を詰め込み、bという変数に'PHP太郎'の文字列を代入(セット)する
ためには、以下の通り記述します。

<?php
$a = 100;
$b = 'PHP太郎'
?>

変数というのは、値をセットし、その後プログラムで使用します。
代入という用語も少し難しく感じるかもしれませんが、右にある値を左にある変数に=を書いて詰め込むと
いう意味です。

さきほどのPHP情報を表示していたindex.phpを少し書き換えてみましょう。

PHPの情報のかわりに、hello world championと表示させるプログラムです。
PHPで画面に何かを表示させるには print(); を使います。

ここでprintの後ろにも()がついています。カッコ内に引数を記述ことが必要な場合とそうでない場合にわかれます。
前述のphpinfo();の時はphpinfoのほうでPHPの情報を表示しているので引数は不要ですが、引数が必要でない
場合でも()をつけます。

今回のprintには、画面に何という文字を表示するかをprint実行時に引数のなかから「引っ張り出して」表示するの
で、文字列でhello world champion!をカッコの中にセットします。

また引数というと何か数字に関係したもののように考えてしまがちですが、そうでは無く、数字に限らず文字列や
他のデータ(型とも呼びます)も詰め込むようにセット可能です。

そして文字列hello world champion!をカッコの中に詰め込むには文字列の両端にシングルクォーテションを
付ける規則がありますので、'hello world champion'となります。

それではindex.phpを書き換えてみましょう

<?php
print('hello world champion');
?>

これでhello world championと画面に表示されればOKです。

さらに変数を用いて'hello world champion'と表示されてから、'hello world 'と表示されるように
書き換えてみましょう。

<?php
$a = 'hello world champion';
print($a);

$a = 'hello world';
print($a);
?>
PHPは上から命令が実行されていくので、変数aのその時その時にセットされた値の内容が表示されればOKです。