目次
概要
このサイトで動いている、動作確認のできるサンプルプログラムです。
データベースのテーブルを検索し、テーブルの内容を表示する PHP プログラムです。
解説
次の動作をするPHPプログラムです。
1)データベースからテーブル名を取得します。 2)SelectBoxにテーブル一覧を表示します。 3)テーブル名を選択します。 4)選択されたテーブルの内容を表示します。
ソースコード
テーブル一覧を取得して Select Box で表示
<!-- http://localhost/php/PHP_Source/PH1023_Select_Table_SelectBox/DB_SelectBox_input.php -->
<!-- http://lifeandit.com/php/PHP_Source/PH1023_Select_Table_SelectBox/DB_SelectBox_input.php -->
<!DOCTYPE html>
<html lang="ja">
<head>
<MEAT chaeset="UTF-8">
<title> PHP </title>
</head>
<body>
<header>
<h1>PHPの講座</h1>
<style type="text/css">
h2{color:red;}
.sub_comment{ color:blue ; }
</style>
</header>
<main>
<h2> PHP ソース </h2>
<?php
if ($_SERVER['HTTP_HOST'] == 'localhost') {
$DataBase = "lifeandit_eng001" ;
$username = "root" ;
$password = "" ;
$hostname = "localhost" ;
} else {
$DataBase = file_get_contents('../../lifeandit_Database_Pram/database.txt');
$username = file_get_contents('../../lifeandit_Database_Pram/user.txt');
$password = file_get_contents('../../lifeandit_Database_Pram/password.txt');
$hostname = file_get_contents('../../lifeandit_Database_Pram/host.txt');
}
$dsn = "mysql:dbname=$DataBase;host=$hostname";
try {
$dbh = new PDO($dsn, $username, $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();
}
$sql = 'SHOW TABLES';
$stmt = $dbh->query($sql);
while ($result = $stmt->fetch(PDO::FETCH_NUM)){
$table_names[] = $result[0];
}
?>
<dev class="sub_comment">
<form action="Select_Table.php" method="get">
<label for="Table_name">テーブル名:</label>
<select size="1" name="Table_name" style="height:35px;width:300px;">
<?php foreach ($table_names as $key => $val) : ?>
<?php echo "<option value=$val> $val </option> " ?>
<?php endforeach ?>
</select>
<input type="submit" value="送信する">
</form>
</dev>
</main>
<footer>
</footer>
</body>
</html>
選択されたテーブル名の内容を表示
<!-- http://localhost/php/PHP_Source/PH1022_Select_Table_List/Select_Table.php -->
<!-- http://localhost/php/PHP_Source/PH1022_Select_Table_List/Select_Table.php -->
<!DOCTYPE html>
<html lang="ja">
<head>
<MEAT chaeset="UTF-8">
<title>PHP Sample</title>
<style type="text/css">
#message {color:red ; background-color:white; font-size: 16px; }
#sql {color:black; background-color:white; font-size: 24px; }
</style>
</head>
<body>
<header><h1>MySQLのカラム名をPHPで取する</h1></header>
<main>
<header><h2>概要</h2></header>
Mysqlで、テーブルのカラム名とデータを取得する。<br>
<dev id="message" >
このページは実際のPHPプログラムで実行されています。<br>
</dev>
<!-- パラメータセットアップ -->
<?php
// $tablename = '顧客マスタ' ;
$tablename = htmlspecialchars($_REQUEST['Table_name'], ENT_QUOTES) ;
$sql = "SELECT * FROM $tablename; " ;
if ($_SERVER['HTTP_HOST'] == 'localhost') {
$DataBase = "lifeandit_eng001" ;
$username = "root" ;
$password = "" ;
$hostname = "localhost" ;
} else {
$DataBase = file_get_contents('../../lifeandit_Database_Pram/database.txt');
$username = file_get_contents('../../lifeandit_Database_Pram/user.txt');
$password = file_get_contents('../../lifeandit_Database_Pram/password.txt');
$hostname = file_get_contents('../../lifeandit_Database_Pram/host.txt');
}
$dsn = "mysql:dbname=$DataBase;host=$hostname";
?>
<?php echo "<h3> $tablename </h3>" ; ?>
<!-- テーブル用のSQL文 -->
<dev id="sql">
<?php print( "データベース : $DataBase "); print('<br>'); ?>
<?php print( "テーブル名 : $tablename "); print('<br>'); ?>
<?php print( " SQL文: $sql "); print('<br>'); ?>
</dev>
<?php
try { $dbh = new PDO($dsn, $username, $password,
array(PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES utf8') );
// SQLを実行
$res = $dbh->query($sql);
} catch ( PDOException $e){ print('Error:'.$e->getMessage()); die(); }
// カラム名の取得
for ($i = 0; $i < $res->columnCount(); $i++) {
$column_index[] = $res->getColumnMeta($i)['name'];
}
// $dbh をクリア
$dbh = null ;
?>
<!-- テーブル表示 -->
<dev>
<table border="1">
<!-- カラム名表示 -->
<tr>
<?php foreach ($column_index as $s) : ?>
<td> <?php echo $s ; ?></td>
<?php endforeach ?>
</tr>
<!-- データ表示 -->
<?php foreach ( $res as $row ) : ?>
<tr>
<?php foreach ( $column_index as $r ) : ?>
<td> <?php echo htmlspecialchars( $row[ $r ] ) ; ?></td>
<?php endforeach ?>
</tr>
<?php endforeach ?>
</table>
</dev>
</main>
<footer> </footer>
</body>
</html>
<!-- http://localhost/kajyu/php/0140_SelectTable/Src_SelectTable_office.php -->
<!-- http://sungrow.online/kajyu/php/0140_SelectTable/Src_SelectTable_office.php -->
<!DOCTYPE html>
<html lang="ja">
<head>
<MEAT chaeset="UTF-8">
<title>PHP Sample</title>
<style type="text/css">
#message {color:red ; background-color:white; font-size: 16px; }
#sql {color:black; background-color:white; font-size: 24px; }
</style>
</head>
<body>
<header><h1>MySQLのカラム名をPHPで取する</h1></header>
<main>
<header><h2>概要</h2></header>
Mysqlで、テーブルのカラム名を取得するSQL文とPHPのソースコードです。<br>
<dev id="message" >
このページは実際のPHPプログラムで実行されています。<br>
</dev>
<!-- パラメータセットアップ -->
<?php
// $tablename = htmlspecialchars($_REQUEST['Table_name'], ENT_QUOTES) ;
// $tablename = 'Office_master' ;
// $tablename = 'fruit' ;
// $tablename = 'processing' ;
$tablename = 'data' ;
$sql = "SELECT * FROM $tablename; " ;
if ($_SERVER['HTTP_HOST'] == 'localhost') {
$DataBase = "_sungrow_tmp2021" ;
$username = "root" ;
$password = "" ;
$hostname = "localhost" ;
} else {
// $DataBase = file_get_contents('../Database_Pram/database.txt');
// $username = file_get_contents('../Database_Pram/user.txt');
// $password = file_get_contents('../Database_Pram/password.txt');
// $hostname = file_get_contents('../Database_Pram/host.txt');
$DataBase = "_sungrow_tmp2021" ;
$username = "_sungrow_tmp2021" ;
$password = "tmp-2021" ;
$hostname = "mysql016.phy.heteml.lan" ;
}
$dsn = "mysql:dbname=$DataBase;host=$hostname";
?>
<?php echo "<h3> $tablename </h3>" ; ?>
<!-- テーブル用のSQL文 -->
<dev id="sql">
<?php print( "データベース : $DataBase "); print('<br>'); ?>
<?php print( "テーブル名 : $tablename "); print('<br>'); ?>
<?php print( " SQL文: $sql "); print('<br>'); ?>
</dev>
<?php
try { $dbh = new PDO($dsn, $username, $password,
array(PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES utf8') );
// SQLを実行
$res = $dbh->query($sql);
} catch ( PDOException $e){ print('Error:'.$e->getMessage()); die(); }
// カラム名の取得
for ($i = 0; $i < $res->columnCount(); $i++) {
$column_index[] = $res->getColumnMeta($i)['name'];
}
// $dbh をクリア
$dbh = null ;
?>
<!-- テーブル表示 -->
<dev>
<table border="1">
<!-- カラム名表示 -->
<tr>
<?php foreach ($column_index as $s) : ?>
<td> <?php echo $s ; ?></td>
<?php endforeach ?>
</tr>
<!-- データ表示 -->
<?php foreach ( $res as $row ) : ?>
<tr>
<?php foreach ( $column_index as $r ) : ?>
<td> <?php echo htmlspecialchars( $row[ $r ] ) ; ?></td>
<?php endforeach ?>
</tr>
<?php endforeach ?>
</table>
</dev>
</main>
<footer> </footer>
</body>
</html>
