PHPでデータベース(DB)の値を表示する。
まずはテーブル定義が必要になります。
簡単なテーブルを作成してみよう。
今龍馬伝にはまっているので、タイムリーな人物テーブルを作成。
create table table1 ( id int not null auto_increment, nam varchar(20), pre varchar(10), ag int, primary key(id) ); insert into table1 (nam, pre, ag) values ('坂本龍馬', '土佐藩', 45); insert into table1 (nam, pre, ag) values ('桂小五郎', '長州藩', 23); insert into table1 (nam, pre, ag) values ('高杉晋作', '長州藩', 23); insert into table1 (nam, pre, ag) values ('近藤勇', '京', 28); insert into table1 (nam, pre, ag) values ('西郷隆盛', '薩摩藩', 28); insert into table1 (nam, pre, ag) values ('中岡慎太郎', '土佐藩', 35);
じゃ行きまっせ。
とりあえずコード書きますさかい!
<html> <head> <title>ただのMySQL表示スクリプト</title> </head> <body> <h3>MySQLでの表示スクリプト</h3> <?php //接続に必要な情報を羅列してみた $server = "localhost"; $dbname = "test"; $user = "root"; $pass = "mysql"; //表示用とDBの文字コードを設定 $enc_disp = "EUC-JP"; $enc_db = "EUC-JP"; //データの文字コードを変換する用の関数 function cnv_enc($string, $to, $from) { $det_enc = mb_detect_encoding($string, $from . "," . $to); if ($det_enc and $det_enc != $to) { return mb_convert_encoding($string, $to, $det_enc); } else { return $string; } } //データベースに接続スクリプト $conn = mysql_connect($sv, $user, $pass) or die("コネクション取得時のエラー"); mysql_select_db($dbname) or die("データベース接続エラー"); //データの取り出し $sql = "select * from table1 order by id"; $res = mysql_query($sql, $conn); ?> <table border="1"> <tr> <td>ID</td> <td>名前</td> <td>出身</td> <td>年齢</td> </tr> <?php while($row = mysql_fetch_array($res, MYSQL_ASSOC)) { echo "<tr>"; echo "<td>" . $row["id"] . "</td>"; echo "<td>" . cnv_enc($row["nam"], $enc_disp, $enc_db)."</td>"; echo "<td>" . cnv_enc($row["pre"], $enc_disp, $enc_db)."</td>"; echo "<td>" . $row["ag"] ."</td>"; echo "</tr>"; } ?> </table> <?php mysql_close($conn); ?> </body> </html>
個人的にやけど、
参考になるなら使ってください。
1.文字コードを変換する用の関数をあらかじめ定義する
僕はデータの文字コードを変換する用の関数をあらかじめ定義するのが好きです。
実際にサイト運営するとPHPは文字化けとの格闘だったからです。
mb_convert_encoding()を呼出す用のcnv_enc()を用意しています。
2.コネクションを取得する
mysql_connect()で接続するためのコネクションを取得します。僕はJavaやってたんで、
この辺はも問題無い!
3.使用するDBをアクティブ化する
mysql_select_db()で使用するデータベースを指定する。
4.SQLを実行し結果を配列にする
mysql_query()でデータを取り出し、mysql_fetch_array()で配列にする。
その際、「MYSQL_ASSOC」を引数にしていすることで、テーブルの項目がインデックスになります。
5.コネクションを閉じる
mysql_close()でコネクションを閉じます。
これで一連の流れは終了!