Mysqli-obtaining-using-mysqli-metadata

提供:Dev Guides
移動先:案内検索

MySQLiメタデータの取得と使用

MySQLiから取得したい3つの情報があります。

  • クエリの結果に関する情報-これには、SELECT、UPDATE、またはDELETEステートメントの影響を受けるレコードの数が含まれます。
  • テーブルとデータベースに関する情報-これには、テーブルとデータベースの構造に関する情報が含まれます。
  • * MySQLiサーバーに関する情報*-これには、データベースサーバーの現在のステータス、バージョン番号などが含まれます。

mysqliプロンプトでこれらの情報をすべて取得するのは非常に簡単ですが、PERLまたはPHP APIを使用しているときに、これらの情報をすべて取得するにはさまざまなAPIを明示的に呼び出す必要があります。 次のセクションでは、この情報を取得する方法を示します。

クエリの影響を受ける行数の取得

PERLの例

DBIスクリプトでは、クエリの実行方法に応じて、影響を受けた行のカウントがdo()またはexecute()によって返されます-

# Method 1
# execute $query using do( )
my $count = $dbh->do ($query);
# report 0 rows if an error occurred
printf "%d rows were affected\n", (defined ($count) ? $count : 0);

# Method 2
# execute query using prepare( ) plus execute( )
my $sth = $dbh->prepare ($query);
my $count = $sth->execute ( );
printf "%d rows were affected\n", (defined ($count) ? $count : 0);

PHPの例

PHPでは、mysqli_affected_rows()関数を呼び出して、クエリが変更された行数を調べます-

$result_id = mysqli_query ($query, $conn_id);
# report 0 rows if the query failed
$count = ($result_id ? mysqli_affected_rows ($conn_id) : 0);
print ("$count rows were affected\n");

テーブルとデータベースのリスト

これは、データベースサーバーで使用可能なすべてのデータベースとテーブルを非常に簡単に一覧表示できます。 十分な特権がない場合、結果はnullになる可能性があります。

以下で説明した方法とは別に、SHOW TABLESまたはSHOW DATABASESクエリを使用して、PHPまたはPERLでテーブルまたはデータベースのリストを取得できます。

PERLの例

# Get all the tables available in current database.
my @tables = $dbh->tables ( );
foreach $table (@tables ){
   print "Table Name $table\n";
}

PHPの例

<?php
   $servername = "localhost:3306";
   $username = "root";
   $password = "";
   $dbname = "TUTORIALS";
   $conn = new mysqli($servername, $username, $password, $dbname);

   if ($conn->connect_error) {
      die("Connection failed: " . $conn->connect_error);
   }
   echo"Database connected";
   $sql="SHOW DATABASES";

   if (!($result = mysqli_query($conn,$sql))) {
      printf("Error: %s\n", mysqli_error($conn));
   }
   while( $row = mysqli_fetch_row( $result ) ){
      if (($row[0]!="information_schema") && ($row[0]!="mysql")) {
         echo $row[0]."\r\n";
      }
   }
   $conn->close();
?>

サーバーメタデータの取得

MySQLには次のコマンドがあり、mysqlプロンプトで実行するか、PHPなどのスクリプトを使用してデータベースサーバーに関するさまざまな重要な情報を取得できます。

Sr.No. Command & Description
1

SELECT VERSION( )

サーバーのバージョン文字列

2

SELECT DATABASE( )

現在のデータベース名(ない場合は空)

3

SELECT USER( )

現在のユーザー名

4

SHOW STATUS

サーバーステータスインジケータ

5

SHOW VARIABLES

サーバー構成変数