目次
概要
このサイトで動いている、動作確認のできるサンプルプログラムです。
データベースのテーブルを検索し、テーブルの内容を表示する 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>