MySQL的三個信息:
- 查詢的結果有關的信息: 這包括由任何SELECT,UPDATE或DELETE語句產生數量的記錄。
- 表和數據庫有關的信息: 這包括表和數據庫的結構有關的信息。
- MySQL服務器的信息: 這包括當前狀態的數據庫服務器,版本號等。
在mysql提示符下很容易獲得所有這些信息。但是,當使用Perl或PHP的API,那么我們就需要顯式地調用各種API獲得所有這些信息。下面的部分將告訴你如何獲得這些信息。
獲取查詢所影響的行數:
PERL 實例:
在DBI腳本中,受影響的行數由do()或execute()方法返回,這取決于如何執行查詢:
1
2
3
4
5
6
7
8
9
10
11
|
# 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中,調用mysql_affected_rows()函數找出多少行查詢改變:
1
2
3
4
|
$result_id = mysql_query ( $query , $conn_id ); # report 0 rows if the query failed $count = ( $result_id ? mysql_affected_rows ( $conn_id ) : 0); print ( "$count rows were affected\n" ); |
表和數據庫清單(列表):
很容易列出了所有與數據庫服務器的數據庫和表。如果沒有足夠的權限結果可能是空的。
除了方法,我剛才提到下面可以使用SHOW TABLES或SHOW DATABASES查詢的表或數據庫的列表,無論是在PHP或PERL。
PERL 實例:
1
2
3
4
5
|
# Get all the tables available in current database. my @tables = $dbh ->tables ( ); foreach $table ( @tables ){ print "Table Name $table\n" ; } |
PHP 實例:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
<?php $con = mysql_connect( "localhost" , "userid" , "password" ); if (! $con ) { die ( 'Could not connect: ' . mysql_error()); } $db_list = mysql_list_dbs( $con ); while ( $db = mysql_fetch_object( $db_list )) { echo $db ->Database . "<br />" ; } mysql_close( $con ); ?> |
獲取服務器的元數據:
在MySQL可以執行下面的命令是mysql提示符下使用,或使用任何腳本,如PHP,數據庫服務器獲取各種重要信息。