最新記事
(06/29)
(06/04)
(06/03)
(05/30)
(05/28)
|
ニュース
この欄には、このブログの内容に関連するニュースを掲載する予定です。
|
PHP+SQLite テーブル情報(sqlite_master)
前回の「PHP+SQLite テーブル作成(CREATE TABLE) 」では、そこで作成したテーブル「member」にデータを入力する方法を今回のテーマとすることを予告していました。しかしながら、データを入力する前に、テーブルが意図どおりに作成されているか確認したくなりました。何かいい方法はないでしょうか。
SQLiteでは特殊なテーブル「sqlite_master」というものがあって、このテーブルに作成したテーブルやインデックスの情報が格納されます。このテーブルを見てみたいと思います。
まず、前々回の「PHP+SQLite クエリの実行(sqlite_query) 」でソースを示したクエリの入力画面を修正して、クエリの結果ハンドルを示すだけでなく、結果セットのデータも表示するようにしましょう。
[ソース]sqlite_queryパラメータ入力画面--sqlite_query().php
これをブラウザで表示した例を次のイメージで示します。
データベース名を「memberdb」、クエリを「SELECT * FROM sqlite_master」として実行した例です。
[画面サンプル]テーブル情報表示「SELECT * FROM sqlite_master」
「sqlite_master」テーブルは、type,name,tbl_name,rootpage,sqlの5つのフィールドを持っています。
●type---tableかindexか
●name---typeがtableの場合はテーブル名
indexの場合はどのテーブルのインデックスか
●tbl_name---テーブル名
●rootpage---ハンドルでしょうか?
●sql--------当該テーブルを作成するSQL文
画面サンプルにあるように、データベース「memberdb」には、テーブル「member」が存在していることがわかります。
上記のようにデータベース内にどのような名前のテーブルがあるか知りたいときは、「SELECT * FROM sqlite_master」を実行しましょう。
SQLiteでは特殊なテーブル「sqlite_master」というものがあって、このテーブルに作成したテーブルやインデックスの情報が格納されます。このテーブルを見てみたいと思います。
まず、前々回の「PHP+SQLite クエリの実行(sqlite_query) 」でソースを示したクエリの入力画面を修正して、クエリの結果ハンドルを示すだけでなく、結果セットのデータも表示するようにしましょう。
[ソース]sqlite_queryパラメータ入力画面--sqlite_query().php
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS">
<meta http-equiv="Pragma" content="no-cache">
<title>sqlite_query()</title>
<style type="text/css">
<!--
table,td {border:#669966 solid 1px;empty-cells:show;}
th {border:#669966 solid 1px;background-color:#ccffcc;}
-->
</style>
</head>
<body>
<h1>SQLite クエリの実行</h1>
<p>SQLiteでクエリを実行します。データベース名とクエリを入力して下さい。</p>
<form method='post' action="<?= $_SERVER[PHP_SELF] ?>">
DatabaseName:<br>
<input type='text' name='dbname' value="<?= $_POST['dbname'] ?>"><br>
Query:<br><input type='text' name='query' value="<?= $_POST['query'] ?>" size='120'>
<input type='submit' value='実行'>
</form>
<h2>Queryサンプル</h2>
<p>SELECT * FROM sqlite_master</p>
<hr>
<?php
if($_POST['dbname']){
$db = sqlite_open($_POST['dbname']);
if(!($db)){
die("データベースをオープンできません。");
}else{
$query = $_POST['query'] ;
$query = htmlspecialchars($query) ;
$query = str_replace("\\","",$query);
$result = sqlite_query($db,$query);
echo "クエリを実行しました(結果ハンドル:".$result.")<br>";
$fields = sqlite_num_fields($result);
$rows = sqlite_num_rows($result);
echo "<table><tr>";
for($i=0;$i<$fields;$i++){
echo "<th>".$i."</th>";
}
echo "</tr><tr>";
for($i=0;$i<$fields;$i++){
$field_name=sqlite_field_name($result,$i);
echo "<th>".$field_name."</th>";
}
echo "</tr>";
for($j=0;$j<$rows;$j++){
$record = sqlite_fetch_array($result);
echo "<tr>";
for($i=0;$i<$fields;$i++){
echo "<td>".$record[$i]."</td>";
}
echo "</tr>";
}
echo "</table>";
}
}
?>
</body>
</html>
これをブラウザで表示した例を次のイメージで示します。
データベース名を「memberdb」、クエリを「SELECT * FROM sqlite_master」として実行した例です。
[画面サンプル]テーブル情報表示「SELECT * FROM sqlite_master」
「sqlite_master」テーブルは、type,name,tbl_name,rootpage,sqlの5つのフィールドを持っています。
●type---tableかindexか
●name---typeがtableの場合はテーブル名
indexの場合はどのテーブルのインデックスか
●tbl_name---テーブル名
●rootpage---ハンドルでしょうか?
●sql--------当該テーブルを作成するSQL文
画面サンプルにあるように、データベース「memberdb」には、テーブル「member」が存在していることがわかります。
上記のようにデータベース内にどのような名前のテーブルがあるか知りたいときは、「SELECT * FROM sqlite_master」を実行しましょう。
PR