发布于 2015-07-31 16:34:39 | 284 次阅读 | 评论: 0 | 来源: 网络整理
有三个信息,经常要从MySQL获取。
有关查询结果的信息: 这包括任何SELECT,UPDATE或DELETE语句所影响的记录数量。
有关表和数据库的信息: 这包括关于表和数据库的结构的信息。
关于MySQL服务器的信息: 这包括数据库服务器的当前状态,版本号等。
在mysql的提示符下,很容易得到这些信息,但如果使用Perl或PHP的API,需要显式调用各种API来获取这些信息。 下面的部分将说明如何获取这些信息。
在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 affectedn", (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 affectedn", (defined ($count) ? $count : 0);
在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 affectedn");
这很容易列出数据库服务器中的所有可用的数据库和表。但如果结果可能为null,那么可能没有足够的权限。
除了下面提到的方法,还可以用SHOW TABLES或SHOW DATABASES来查询获得表或数据库列表,无论是在 PHP 或 Perl 中。
# Get all the tables available in current database.
my @tables = $dbh->tables ( );
foreach $table (@tables ){
print "Table Name $tablen";
}
<?php
$con = mysql_connect("localhost", "user", "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提示符下执行,或使用任何如PHP脚本来获取各种有关数据库服务器的重要信息。
命令 | 描述 |
---|---|
SELECT VERSION( ) | 服务器版本字符串 |
SELECT DATABASE( ) | 当前数据库名称(如果没有,则为空) |
SELECT USER( ) | 当前用户名 |
SHOW STATUS | 服务器状态指示 |
SHOW VARIABLES | 服务器配置变量 |