PHPでMySQLのTABLEデータを表示させる
以前MySQLを入れて終わってたので簡単なサンプルのメモです。
ここまで出来たら第一歩でしょうか。
MySQLにテーブルを作ってデータを入れる
MySQLを入れただけなのでまだ空っぽです。
なので仮データを入れることにします。
どっかのサイトから参考にユーザーテーブルを作ります。
CREATE TABLE user ( user_id CHAR(128) PRIMARY KEY COMMENT 'ユーザーID', name CHAR(128) COMMENT '名前', age INT(3) COMMENT '年齢', reg_dt DATETIME NOT NULL COMMENT '登録日', reg_user VARCHAR(128) NOT NULL COMMENT '登録者', mod_dt DATETIME COMMENT '更新日', mod_user VARCHAR(128) COMMENT '更新者', del_date DATETIME COMMENT '削除日', del_user VARCHAR(128) COMMENT '削除者', del_flg TINYINT(1) UNSIGNED NOT NULL DEFAULT 0 COMMENT '削除フラグ' ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='ユーザー';
テーブルを作ったらデータを入れる
INSERT INTO `user` (`user_id`,`name`, `age`, `reg_dt`, `reg_user`, `mod_dt`, `mod_user`, `del_date`, `del_user`, `del_flg`) VALUES ('1','user_1', 10, '2000-01-01 00:00:00','root',NULL,NULL,NULL,NULL,0);
PHPでMySQLのDBにアクセスする
PDOでアクセスしてみる。
testDBは最初からあったのを使用。
ない場合は作っとく
$dbname = 'test'; // データベース名 $host = 'localhost'; // ホスト $user = 'root'; // mysqlに接続するユーザー $password = 'rLw3>lfut?1q'; // パスワード $dns = 'mysql:dbname='.$dbname.';host='.$host.';charset=utf8'; try { $dbh = new PDO($dns, $user, $password, array( PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION) ); if ($dbh == null) { print_r('接続失敗').PHP_EOL; } else { print_r('接続成功').PHP_EOL; } } catch(PDOException $e) { echo('Connection failed:'.$e->getMessage()); die(); }
MySQLのDBデータを取得する
show tableでテーブル名を取得して
そのテーブル名を使ってSELECT文を作ってテーブルデータを取得する
$sql = 'SHOW TABLES'; $stmt = $dbh->query($sql); while ($result = $stmt->fetch(PDO::FETCH_NUM)){ $table_names[] = $result[0]; } $table_data = array(); foreach ($table_names as $key => $val) { $sql2 = "SELECT * FROM $val;"; $stmt2 = $dbh->query($sql2); $table_data[$val] = array(); while ($result2 = $stmt2->fetch(PDO::FETCH_ASSOC)){ foreach ($result2 as $key2 => $val2) { $table_data[$val][$key2] = $val2; } } }
ブラウザに表示する
テーブルデータをテーブルで表示
foreach ($table_data as $key => $val) { echo "<h1>$key</h1>"; if (empty($val)) { continue; } echo "<table border=1 style=border-collapse:collapse;>"; echo "<tr>"; foreach ($table_data[$key] as $key2 => $val2) { echo "<th>"; echo $key2; echo "</th>"; } echo "</tr>"; echo "<tr>"; foreach ($table_data[$key] as $key2 => $val2) { echo "<td>"; echo $val2; echo "</td>"; } echo "</tr>"; echo "</table>"; }
表示は下のような
見出しにテーブル名でテーブル表示でテーブルデータを表示することができた
user
user_id | name | age | reg_dt | reg_user | mod_dt | mod_user | del_date | del_user | del_flg |
---|---|---|---|---|---|---|---|---|---|
1 | user_1 | 10 | 2000-01-01 00:00:00 | root | 0 |
多分テーブルが増えても全取得できてると思う
とりあえず、簡単な表示はできました。
ps. <pre>でテーブル囲ったらテーブルの見出しが真っ白で見えないね(汗