PHP 关于mysqli_connect()的返回值应怎么用在mysqli_xx()里

在之前的php版本中,之前比较常用的是mysql_connect(server,user,pwd,newlink,clientflag)来连接数据库,并且使用mysql_xxx()函数进行mysql的操作,然而这种方法在现在来说已经不再推荐使用,而是使用mysqli 或 PDO。现在可以来拓展三者的区别

1 . mysql 是设计开发允许PHP应用与MySQL数据库交互的早期扩展。它主要是针对MySQL4.1.3或更早的版本设计的,所以对于MySQL4.1.3往后面的版本并不适用,它不支持后期MySQL服务端提供的一些特性。

2.mysqli 是mysql的增强扩展,它能适用于MySQL4.1.3及往后更新的版本,PHP5及以后版本支持mysqli扩展。

3.PDO(PHP数据对象)是PHP应用中的一个数据库抽象层规范。PDO提供了一个统一的API接口可以,使得你的PHP应用不去关心具体要 连接的数据库服务器系统类型。也就是说,如果你使用PDO的API,可以在任何需要的时候无缝切换数据库服务器。

以下是三者表格的对比,这样会比较清晰:

  PHP的mysqli扩展 PDO (使用PDO MySQL驱动和MySQL Native驱动) PHP的mysql扩展
引入的PHP版本 5.0 5.0 3.0之前
PHP5.x是否包含
MySQL开发状态 活跃 在PHP5.3中活跃 仅维护
在MySQL新项目中的建议使用程度 建议 - 首选 建议 不建议
API的字符集支持
服务端prepare语句的支持情况
客户端prepare语句的支持情况
存储过程支持情况
多语句执行支持情况 大多数
是否支持所有MySQL4.1以上功能 大多数

具体更多三者如何使用,可以在网上搜索。

回到正题来。

在这次的项目中考虑到了使用的数据库类型是MySQL的,所以没有使用PDO,主要是不太熟悉PDO(笑),所以此次的情况使用了mysqli扩展。

我遇到这样的情况:在mysql.func.php文件里面,我使用mysqli_connect()函数,和许多相应操作的mysqli_xx()函数,而这些mysqli_xx()函数都需要提供mysqli_connect()所返回的类型为mysqli的返回值,我们假定为$link。我当初的想法是在mysqli_xx()里面再来调用一次mysqli_connect(),但是事实上mysqli_connect()每次调用都会生成一个新的连接到数据库,那这样就不是原来的连接了,所以这样的方法不可行。

但这些mysqli_xx()函数将会在不同的文件中使用或者说是调用到,怎么引用这个变量?

在PHP里面有一个叫做超全局变量$GLOBALS这样一个数组

$GLOBALS — 引用全局作用域中可用的全部变量

一个包含了全部变量的全局组合数组。变量的名字就是数组的键。

所以我们所定义的$link这个变量是存储在了$GLOBALS数组中的。假设在根目录include.php里面调用了mysqli_connect(),并且让$link = mysqli_connect(host,username,password,dbname,port,socket),在另外一个文件假设是lib目录下的admin.php需要用到mysqli_xxx()函数,需要$link。

//先引入定义了$link = mysqli_connect(host,username,password,dbname,port,socket)的文件
//当前文件是lib/admin.php
require_once '../include.php';

//假设使用mysqli_change_user()

//用$GLOBALS来引用$link
mysqli_change_user ( $GLOBALS['link'] , $user , $password , $database ) ;

//something...

这样就能在不同地方引用$link了。

 

你可能感兴趣的:(PHP,Mysql)