PHP 3 专题 -- 数据库函数

---摘自互联网

数据库函数(部分)

        PHP的数据库功能应该说是它最有用的功能之一.它的特点就是内置了对很多数据库的支持,而不再需要重新扩充. 

        Perl和Tcl也都是常用的跨平台语言,都有很强的字符能力,前者字符能力更  强一些,性能更高一些;而后者有GUI能力.它们都可以扩充以支持数据库,但这时如果仍旧希望应用程序有跨平台能力,则需要在各种平台上各自扩充,比如在Unix平台上对Perl扩充DBI包,在Windows  95/NT下对Perl扩充Win32::ODBC包,有时候这是很麻烦的.而PHP由于内置了数据库支持,就为编程人员省去了这些麻烦. 

        对各种数据库,访问函数并不完全相同,例如那些基于SQL的数据库显然不能用和dBase或dbm相同的方式访问.以下比较详细地介绍以下MiniSql和MySql数据库的访问函数: 

 

        mSQL(mini  SQL)是一种小型的关系数据库,性能不是太好,对SQL语言的支持也不够完全,但在一些网络数据库应用中是足够了. 

        MySQL是mSQL的一个变种,性能有所提高,增加了用户访问控制.  这两种数据库都是通过SQL语言访问的,但MySQL基本支持全部SQL92规范,  只是"select  ...  where  select  .."不支持,另外还扩充了一些数据类型,而mSQL  则基本上不支持任何嵌套SQL语句,也不支持"update  set  column1=column1-1"这样的语句. 

        mSQL由于较简单,在运行简单的SQL语句时速度比MySQL略快,而MySQL在  线程和索引上下了功夫,运行复杂的SQL语句时比mSQL,PostgreSQL,Oracle等都要快一些.  安全性方面,mSQL通过ACL文件设定各主机上各用户的访问权限,缺省是全部可读/写,而MySQL通过一个授权库设定用户名,口令和访问权限,较可靠一些mSQL的存储能力不是很清楚,MySQL的存储能力受文件系统限制,例如在Linux下不能超过2G(3G?记不清楚了). 

        mSQL与MySQL既然本来就是差不多的两个东西,PHP中对它们的访问语句也都差不多,例如msql_close与mysql_close就分别完成同样的关闭动作.所以以下介绍时只对mysql介绍,msql的访问语句只需换个前缀即可(特殊情况另行说明). 

 

        注意:mSQL与MySQL访问函数都需要有相应的权限才能运行. 

        (1)mysql_connect(主机,用户名,口令); 

        返回一个连接号. 

        注意:mysql各用户的口令可以随该用户所在机器IP地址不同而改变.另外,mSQL没有用户名机制,所以msql_connect只需要一个主机参数.  主机可以是IP地址或域名. 

 

        (2)mysql_create_db(数据库名); 

 

        (3)mysql_select_db(数据库名,连接号); 

        连接一个数据库. 

 

        (4)mysql_query(SQL语句,连接号); 

        如果SQL语句是select,则返回一个结果号.否则返回的值可以不理会. 

        如果失败,返回false. 

 

        (5)mysql_fetch_array(结果号); 

        取出下一行,返回一个数组.可以用数字下标访问(第一个字段是下标  0),也可以用字符串下标访问(即使用各字段名).  如已取了最后一行,返回  false. 

 

        (6)mysql_fetch_field(结果号,[字段序号]); 

        如无字段序号,取下一个字段.  返回一个哈希表,下标有:  name,  table,  max_length,  not_null,  primary_key,  unique_key,  multiple_key,  numeric,  blob,  type,  unsigned,  zerofill  各下标的意思应该比较明白了. 

 

        (7)mysql_num_rows(结果号);mysql_num_fields(结果号); 

 

        (8)mysql_free_result(结果号); 

 

        (9)mysql_list_dbs();mysql_list_tables(数据库名); 

       

        (10)mysql_close(连接号); 

 

        (11)mysql_pconnect(主机,用户名,口令); 

        与mysql_connect完全相似,但建立一个"永久连接",该连接一经建立永不关闭,即使使用mysql_close函数或程序执行完毕也不关闭.下一次试图建立永久连接时,系统如发现已存在一个永久连接,则直接返回该连接号而不重新创建.