MySQL数据库信息
你希望从MySQL获得三种信息。
有关查询结果的信息:这包括受任何SELECT,UPDATE或DELETE语句影响的记录数。
有关表和数据库的信息:这包括有关表和数据库结构的信息。
有关MySQL服务器的信息:这包括数据库服务器的状态,版本号等。
在MySQL提示符下很容易获得所有这些信息,但是在使用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中,调用mysql_affected_rows()函数以查找查询更改了多少行。
$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");
列出表和数据库
列出数据库服务器可用的所有数据库和表非常容易。你的结果可能是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 $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)执行以获取有关数据库服务器的各种重要信息。
序号. | 命令与说明 |
---|---|
1 | SELECT VERSION( ) 服务器版本 |
2 | SELECT DATABASE( ) 当前数据库名称(如果没有则为空) |
3 | SELECT USER( ) 当前用户名 |
4 | SHOW STATUS 服务器状态 |
5 | SHOW VARIABLES 服务器配置变量 |