データベースMySQL関数(リスト取得)
- mysql_list_dbs〔MySQLサーバー上で利用可能なデータベースのリストを取得〕
- mysql_list_fields ※非推奨〔MySQLテーブル上のフィールドのリストを取得〕
- mysql_list_processes〔MySQLプロセスのリストを取得〕
- mysql_list_tables ※非推奨〔MySQLデータベース上のテーブルのリストを取得〕
- mysql_stat〔現在のサーバー情報を取得〕
- mysql_tablename ※非推奨〔フィールドのテーブル名取得〕
mysql_list_dbs
MySQLサーバー上で利用可能なデータベースのリストを取得
unknown
MySQLサーバー上で、利用可能なデータベースのリスト(一覧)を取得します。
成功した場合に結果ポインタ、失敗した場合にFALSEを返します。
オプションの第1引数接続IDが指定されていない場合は、mysql_connect()関数により直近に開かれた接続が使用されます。 接続が確立されていない場合は、引数を指定せずmysql_connect()関数がコールされた時と同様に接続を確立します。 それでも接続が確立できない場合は、E_WARNINGレベルのエラーが発生します。
返り値の結果ポインタの中身を調べるには、mysql_db_name()関数、 取得したデータベースを利用するにはmysql_fetch_array()関数を使用します。
<?
$dbc=mysql_connect("localhost","root","");
$db_list=mysql_list_dbs($dbc);
/* mysql_db_name()関数を使ってデータベースのリストを取得する場合 */
$i=0;
$db_list_max=mysql_num_rows($db_list);
while ($i<$db_list_max){
echo mysql_db_name($db_list,$i)."<br>\n";
$i++;
}
/* mysql_fetch_object()関数を使ってデータベースのリストを取得する場合 */
$db_list=mysql_list_dbs($dbc);
while($dat=mysql_fetch_object($db_list)){
echo $dat->Database."<br>\n";
}
/* 出力例
db_customer
mysql
sample
test
*/
?>
mysql_list_fields ※非推奨
MySQLテーブル上のフィールドのリストを取得
unknown
指定したテーブル名のフィールドのリスト(一覧)を取得します。
成功した場合に結果ポインタ、失敗した場合にFALSEを返します。
返り値のポインタは、mysql_field_flags()関数、 mysql_field_len()関数、 mysql_field_name()関数、 mysql_field_type()関数で使用可能です。
オプションの第1引数接続IDが指定されていない場合は、mysql_connect()関数により直近に開かれた接続が使用されます。 接続が確立されていない場合は、引数を指定せずmysql_connect()関数がコールされた時と同様に接続を確立します。 それでも接続が確立できない場合は、E_WARNINGレベルのエラーが発生します。
この関数は非推奨です。
代わりにmysql_query()関数でSHOW COLUMNS FROM テーブル名 [ LIKE '名前' ]
文を発行し、テーブル名のフィールドのリストを取得することが推奨されています。
<?
/* 非推奨である mysql_list_fields() の代替例 */
$dbc=mysql_connect("localhost","root","");
mysql_select_db("db_customer");
$sql="SHOW COLUMNS FROM tbl_customer";
$res=mysql_query($sql,$dbc) or die("クエリ失敗 :".mysql_error());
if(mysql_num_rows($res)>0){
while($dat=mysql_fetch_object($res)){
echo $dat->Field."<br>";
}
}
/* 出力例
id
firstname
lastname
age
*/
?>
mysql_list_processes
MySQLプロセスのリストを取得
unknown
MySQLのプロセスのリスト(一覧)を取得します。
成功した場合に結果ポインタ、失敗した場合にFALSEを返します。
オプションの第1引数接続IDが指定されていない場合は、mysql_connect()関数により直近に開かれた接続が使用されます。 接続が確立されていない場合は、引数を指定せずmysql_connect()関数がコールされた時と同様に接続を確立します。 それでも接続が確立できない場合は、E_WARNINGレベルのエラーが発生します。
<?
$dbc=mysql_connect("localhost","root","");
$res=mysql_list_processes($dbc);
while($dat=mysql_fetch_object($res)){
printf("%s %s %s %s %s<br>\n",
$dat->Id,
$dat->Host,
$dat->db,
$dat->Command,
$dat->Time
);
}
mysql_free_result($res);
/* 出力例
2 localhost:1040 Sleep 6
42 localhost:3097 Processlist 0
*/
?>
mysql_list_tables ※非推奨
MySQLデータベース上のテーブルのリストを取得
unknown
MySQLデータベース上のテーブル名のリスト(一覧)を取得します。
成功した場合に結果ポインタ、失敗した場合にFALSEを返します。
返り値のポインタの中身を調べるには、mysql_tablename()関数、 取得したテーブルを利用するには、mysql_fetch_array()関数などを使用しましょう。
オプションの第1引数接続IDが指定されていない場合は、mysql_connect()関数により直近に開かれた接続が使用されます。 接続が確立されていない場合は、引数を指定せずmysql_connect()関数がコールされた時と同様に接続を確立します。 それでも接続が確立できない場合は、E_WARNINGレベルのエラーが発生します。
この関数は非推奨です。
代わりにmysql_query()関数でSHOW TABLES FROM [ データベースル名 ] [ LIKE 'パターン' ]
文を発行し、データベース上のテーブルのリストを取得することが推奨されています。
<?
/* 例1: 非推奨である mysql_list_tables() の代替例 */
$dbname="db_customer";
$dbc=mysql_connect("localhost","root","") or die("MySQL接続失敗 :".mysql_error());
$sql="SHOW TABLES FROM ".$dbname;
$res=mysql_query($sql,$dbc);
if(!$res){
echo "【データベースエラー】テーブルリストの取得に失敗しました<br>\n";
echo "MySQL Error: ".mysql_error();
exit;
}
while($dat=mysql_fetch_row($res)){
echo "テーブル名: ".$dat[0]."<br>\n";
}
mysql_free_result($res);
/* 出力例
テーブル名: tbl_customer
テーブル名: tbl_address
*/
?>
<?
/* 例2: テーブル削除フォームの例 */
$dbc=mysql_connect("localhost","root","");
mysql_select_db("db_customer");
$res=mysql_list_tables("db_customer");
if(!$res){
echo "【データベースエラー】テーブルリストの取得に失敗しました<br>\n";
echo "MySQL Error: ".mysql_error();
exit;
}
?>
<table border="1" width="100%">
<tr>
<th>テーブル名</th>
<th>削除しますか?</th>
</tr>
<?
while($dat=mysql_fetch_row($res)){
?>
<tr>
<td><?=$dat[0];?></td>
<td><a href="<?=$PHP_SELF;?>?action=delete&tblname=<?=$dat[0];?>">Yes</a></td>
</tr>
<?
}
?>
</table>
<?
if($action=="delete"){
$sql_del=mysql_query("DROP TABLE ".$tblname);
if($sql_del){
echo "テーブル(".$tblname.")削除成功";
}else{
echo "テーブル(".$tblname.")削除失敗 :".mysql_error();
}
}
?>
mysql_stat
現在のサーバー情報を取得
unknown
現在のMySQLサーバーの状態を取得します。
成功した場合に稼働時間、スレッド、クエリ、オープンされているテーブル、フラッシュされたた分、1秒当たりのクエリ数が文字列として返されます。 その他のデータも含めた状態を取得するには「SHOW VARIABLES文」を使用して下さい。
接続IDが不正な場合は、NULLが返ります。
オプションの第1引数接続IDが指定されていない場合は、mysql_connect()関数により直近に開かれた接続が使用されます。 接続が確立されていない場合は、引数を指定せずmysql_connect()関数がコールされた時と同様に接続を確立します。 それでも接続が確立できない場合は、E_WARNINGレベルのエラーが発生します。
<?
$dbc=mysql_connect("localhost","root","");
$status=explode(' ',mysql_stat($dbc));
print_r($status);
/* 出力例
Array
(
[0] => Uptime: 15212
[1] => Threads: 3
[2] => Questions: 3203
[3] => Slow queries: 0
[4] => Opens: 13
[5] => Flush tables: 1
[6] => Open tables: 1
[7] => Queries per second avg: 0.211
)
*/
?>
<?
/* SHOW VARIABLES文を使って、より詳細なサーバー情報を取得する例 */
$dbc=mysql_connect("localhost","root","");
$res=mysql_query('SHOW VARIABLES',$dbc);
while($dat=mysql_fetch_assoc($res)){
echo $dat['Variable_name'].'='.$dat['Value']."<br>\n";
}
/* 出力例
back_log=50
basedir=C:\mysql\
binlog_cache_size=32768
bulk_insert_buffer_size=8388608
character_set=sjis
・・・(中略)・・・
version=4.0.26-nt
version_comment=Official MySQL binary
version_compile_os=Win32
wait_timeout=28800
*/
?>
mysql_tablename ※非推奨
フィールドのテーブル名取得
unknown
mysql_list_tables()関数より返された結果ポインタ及び整数インデックス(行/テーブル番号)を引数にとります。 成功した場合にテーブル名、失敗した場合にFALSEを返します。
結果ポインタの中身を調べるために、この関数を使用して取得したテーブルを利用するには、 mysql_fetch_array()関数などの関数を利用します。
この関数は非推奨です。
代わりにmysql_query()関数でSHOW TABLES [ FROM データベース名 ] [ LIKE 'パターン' ]
文を発行し、テーブル名を取得することが推奨されています。
<?
/* 例1: mysql_tablename() の使用例 */
$dbc=mysql_connect("localhost","root","");
$res=mysql_list_tables("db_customer");
$numRows=mysql_num_rows($res);
for($i=0; $i<$numRows; $i++){
echo "テーブル名: ".mysql_tablename($res, $i)."<br>\n";
}
/* 出力例
テーブル名: tbl_customer
*/
?>
<?
/* 例2: 非推奨である mysql_tablename() の代替例 */
/* SQL内部関数SHOW TABLESを使用して指定したテーブルの存在確認 */
$dbname="db_customer";
$dbc=mysql_connect("localhost","root","");
$res=mysql_query("SHOW TABLES FROM ".$dbname, $dbc);
if(mysql_num_rows($res)>0){
echo "テーブルは存在します<br>\n";
//テーブルが存在するならテーブル名を取得
$res=mysql_query("SHOW TABLES FROM ".$dbname, $dbc);
while($dat=mysql_fetch_assoc($res)){
print_r($dat); echo "<br>";
}
}else{
echo "テーブルは存在しません<br>\n";
}
/* 出力例
Array ( [Tables_in_db_customer] => tbl_address )
Array ( [Tables_in_db_customer] => tbl_customer )
*/
?>