设为首页收藏本站

就爱编程论坛

 找回密码
 注册

人人连接登陆

无需注册,直接登录

用新浪微博连接

一步搞定

QQ登录

只需一步,快速开始

查看: 318|回复: 0
打印 上一主题 下一主题

在PHP程序中获得MySQL数据库信息 [复制链接]

Rank: 9Rank: 9Rank: 9

  • TA的每日心情
    无聊
    2025-5-27 03:37:20
  • 签到天数: 366 天

    [LV.9]以坛为家II

    论坛先锋 学习至圣 荣誉成员 论坛元老 活跃之星 终极领袖

    我玩的应用:

    跳转到指定楼层
    楼主
    发表于 2012-3-31 02:03:34 |只看该作者 |倒序浏览
    PHP提供了获得MySQL数据库信息的一些函数,比如获得系统中所有的数据库名、表名等。下面将具体介绍这些函数是如何使用的。
    23.3.1  获得所有的数据库要查询系统中都存在哪些数据库,可使用mysql_list_dbs()函数,其语法格式如下:
    resource mysql_list_dbs ([ resource $link_identifier ] )
    mysql_list_dbs()函数返回的结果集中包含了MySQL服务器中所有的数据库,示例如下:
    代码23-9  光盘\codes\第23章\23.3\mysql_list_dbs.php
    <?php
    $connection=mysql_connect("localhost","root","root") or die("连接服务器失败");
    $db_list = mysql_list_dbs($connection);
    while ($row = mysql_fetch_object($db_list)) {
             echo $row->Database . "<br>";
             echo "<hr>";
    }
    mysql_close($connection);
    ?>
    在上面代码中,循环输出结果集时用到了mysql_fetch_object()函数,mysql_fetch_object()函数和 mysql_fetch_array()函数用法类似,不同的是 mysql_fetch_array()函数返回一个数组,而mysql_fetch_object()函数则返回一个对象。 mysql_fetch_object()函数的语法格式如下:
    object mysql_fetch_object ( resource $result )
    23.3.2  获得数据库内的表通过mysql_list_tables()函数可以获得数据库内所有的表的名字,该函数的语法格式如下:
    resource mysql_list_tables ( string $database [, resource $link_identifier] )
    在上述语法中涉及到的参数说明如下。
    l         database:使用的数据库的名称。
    l         link_identifier:mysql_connect()函数返回的连接对象。
    使用mysql_list_tables()函数的示例代码如下:
    代码23-10  光盘\codes\第23章\23.3\mysql_list_tables.php
    <?php
    $connection=mysql_connect("localhost","root","root") or die("连接服务器失败");
    $tb_list = mysql_list_tables("sunyang");
    while ($row= mysql_fetch_row($tb_list)) {
             echo $row[0]."<br>";
    }
    mysql_close($connection);
    ?>
    通过上面代码就可将数据库内所有的数据表输出。
    23.3.3  获取字段的相关信息在一个表中,每个字段都有一系列的属性,比如字段名、数据类型、长度等,PHP提供了相应的函数可以在脚本内将这些属性输出,从而来获取字段的详细 信息。
    1.获取字段名获取字段名通过mysql_field_name()函数来实现,该函数的语法格式如下:
    string mysql_field_name ( resource $result, int $field_offset )
    mysql_field_name()函数将返回指定索引的字段的名字,它的参数的描述如下。
    l         result:mysql_query()函数执行后返回的结果集。
    l         field_offset:字段的偏移量,起始值为零。
    使用mysql_field_name()函数的示例代码如下:
    代码23-11  光盘\codes\第23章\23.3\mysql_field_name.php
    <?php
    $connection=mysql_connect("localhost","root","root") or die("连接服务器失败");
    mysql_select_db("sunyang",$connection) or die("选择数据库失败");
    $query="select * from employee";
    $result=mysql_query($query) or die("查询用户失败");
    echo mysql_field_name($result,0);                                              //输出第一个字段名
    echo "<br>";
    echo mysql_field_name($result,1);                                              //输出第二个字段名
    mysql_close($connection);
    ?>
    在上面代码中可输出第一个字段名和第二个字段名,显示结果如图23-11所示。


    图23-11  获取字段名
    2.获取数据类型mysql_field_type()函数可获得字段的数据类型,该函数的语法格式如下。
    string mysql_field_type ( resource $result, int $field_offset )
    mysql_field_type()函数类似于函数mysql_field_name(),不过mysql_field_type()函数返回的 是字段的数据类型。它的参数的描述如下。
    l         result:mysql_query()函数执行后返回的结果集。
    l         field_offset:字段的偏移量,起始值为零。
    使用mysql_field_type()函数的示例代码如下:
    代码23-12  光盘\codes\第23章\23.3\mysql_field_type.php
    <?php
    $connection=mysql_connect("localhost","root","root") or die("连接服务器失败");
    mysql_select_db("sunyang",$connection) or die("选择数据库失败");
    $query="select * from employee";
    $result=mysql_query($query) or die("查询数据失败");                   //执行查询
    echo mysql_field_type($result,0);                                               //第一个字段的数据类型
    echo "<br>";
    echo mysql_field_type($result,1);                                              //第二个字段的数据类型
    echo "<br>";
    echo mysql_field_type($result,2);                                              //第三个字段的数据类型
    mysql_free_result($result);
    mysql_close();
    ?>
    上面代码执行后将把表employee中的前3个字段的数据类型输出,输出结果如图23-12所示。


    图23-12  获取数据类型
    3.获取字段的数目mysql_num_fields()函数可以将要查询的表内所有字段的数目统计出来,该函数的语法格式如下:
    int mysql_num_fields ( resource $result )
    其中参数result是mysql_query()函数执行后返回的结果集。使用mysql_num_fields()函数的示例代码如下:
    代码23-13  光盘\codes\第23章\23.3\mysql_num_fields.php
    <?php
    $connection=mysql_connect("localhost","root","root") or die("连接服务器失败");
    mysql_select_db("sunyang",$connection) or die("选择数据库失败");
    $query="select * from employee";
    $result=mysql_query($query) or die("查询数据失败");                   //执行查询
    echo mysql_num_fields($result);                                                //输出字段的数目
    mysql_free_result($result);
    mysql_close();
    ?>
    4.获取字段的长度在设计数据库时,因每个字段所代表的数据含义不同,那么各个字段的长度也就不会完全相同。在PHP中,使用mysql_field_len()函数 可获得指定字段的长度,该函数的语法格式如下:
    int mysql_field_len ( resource $result, int $field_offset )
    在上述语法中涉及到的参数说明如下。
    l         result:mysql_query()函数执行后返回的结果集。
    l         field_offset:字段的偏移量,起始值为零。
    使用mysql_field_len()函数的示例代码如下:
    代码23-14  光盘\codes\第23章\23.3\mysql_field_len.php
    <?php
    $connection=mysql_connect("localhost","root","root") or die("连接服务器失败");
    mysql_select_db("sunyang",$connection) or die("选择数据库失败");
    $query="select * from employee";
    $result=mysql_query($query) or die("查询数据失败");          //执行查询
    echo mysql_field_len($result, 0);                                               //第一个字段的长度
    echo mysql_field_len($result, 1);                                               //第二个字段的长度
    echo mysql_field_len($result, 2);                                               //第三个字段的长度
    echo mysql_field_len($result, 3);                                               //第四个字段的长度
    mysql_free_result($result);
    mysql_close();
    ?>
    上面代码的输出结果如图23-13所示。


    图23-13  获取字段的长度
    5.获取字段的其他属性字段除了有字段名、数据类型、长度外,还有一些其他的属性,比如是否为主键、是否为外键、是否允许为空等。要获得字段的其他属性可通过 mysql_field_flags()函数,该函数的语法格式如下:
    string mysql_field_flags ( resource $result, int $field_offset )
    在上述语法中涉及到的参数说明如下:
    l         result:mysql_query()函数执行后返回的结果集。
    l         field_offset:字段的偏移量,起始值为零。
    使用mysql_field_flags()函数的示例代码如下:
    代码23-15  光盘\codes\第23章\23.3\mysql_field_flags.php
    <?php
    $connection=mysql_connect("localhost","root","root") or die("连接服务器失败");
    mysql_select_db("sunyang",$connection) or die("选择数据库失败");
    $query="select * from employee";
    $result=mysql_query($query) or die("查询数据失败");                   //执行查询
    echo mysql_field_flags($result, 0);                                              //第一个字段的属性
    echo "<br>";
    echo mysql_field_flags($result, 1);                                              //第二个字段的属性
    echo "<br>";
    echo mysql_field_flags($result, 2);                                              //第三个字段的属性
    mysql_free_result($result);
    mysql_close();
    ?>
    输出前3个字段的其他属性的结果如图23-14所示。



    图23-14  获取字段的其他属性
    23.3.4  获取错误信息更多的时候,错误往往是避免不了的,但是实用和有效的检错信息却能够帮助程序员及时地发现错误信息,从而提高开发效率。PHP提供了两个函数来生成 错误信息,下面将分别介绍这两个函数。
    1.mysql_error()mysql_error()函数的语法格式如下:
    string mysql_error ( [resource $link_identifier] )
    mysql_error()函数将返回上一个MySQL函数生成的错误信息,若无错误则返回一个空字符串。使用mysql_error()函数的示 例代码如下:
    代码23-16  光盘\codes\第23章\23.3\mysql_error.php
    <?php
    $connection=mysql_connect("localhost","root","root") or die("连接服务器失败");
    mysql_select_db("mydb",$connection);
    echo "错误信息:".mysql_error();
    ?>
    如果系统中不存在名为“mydb”的数据库,程序将会输出如图23-15所示的信息。


    图23-15  mysql_error()函数提示的错误信息
    2.mysql_errno()mysql_errorno()函数的语法格式如下:
    int mysql_errno ( [resource $link_identifier] )
    mysql_errno()函数返回的是MySQL函数执行时生成的错误代码,若没有发生错误则返回0。使用mysql_errno()函数的示例 代码如下:
    代码23-17  光盘\codes\第23章\23.3\mysql_errno.php
    <?php
    $connection=mysql_connect("localhost","root","root") or die("连接服务器失败");
    mysql_select_db("mydb",$connection);
    echo "生成的错误代码:".mysql_errno();
    ?>
    程序执行以后将会输出的信息如图23-16所示。


    图23-16  mysql_errno()函数提示的错误信息



    该贴已经同步到 admin的微博
    分享到: QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
    分享分享0 收藏收藏0 支持支持0 反对反对0 分享到人人 转发到微博
    [img=http://mail.qq.com/cgi-bin/qm_share?t=qm_mailme&email=fRUcHhYWGAQ9GxIFEBwUEVMeEhA]http://rescdn.qqmail.com/zh_CN/htmledition/images/function/qm_open/ico_mailme_02.png[/img]

    使用道具 举报

    您需要登录后才可以回帖 登录 | 注册 人人连接登陆

    晴云孤魂's Blog|就爱编程搜帖|手机版|Archiver|就爱编程论坛     

    GMT+8, 2025-7-2 14:02 , Processed in 0.258851 second(s), 26 queries .

    Powered by Discuz! X2

    © 2001-2011 Comsenz Inc.

    回顶部