php7不支持mysql,迁移mysqli方法

  • 内容
  • 评论
  • 相关

PHP7不再支持mysql,mysql迁移mysqli方法

一、首先先弄清楚mysql和mysqli的区别和联系:

1.两者都是php函数集,与mysql数据库关系基本没有。

2.php5之前,一般用php的mysql函数去驱动mysql数据库的,比如mysql_query()的函数,属于面向过程。

3.php5以后,增加mysqli的函数功能,可以说是mysql系统函数的增强版,更稳定更高效更安全,与mysql_query()对应的有mysqli_query(),属于面向对象,用对象的方式操作驱动mysql数据库。

4.mysqli相比mysql使用的是永久链接。

mysql连接:每当第二次使用的时候,都会重新打开一个新的进程。

mysqli连接:一直都只使用同一个进程。

这样也就是说,使用mysqli可以很好的减缓服务器压力。好像也有mysql永久连接的mysql_pconnect()函数。

 

二、再来看看他们的用法:

mysql(过程方式):
$conn = mysql_connect(‘localhost’, ‘user’, ‘password’); //连接mysql数据库
mysql_select_db(‘data_base’); //选择数据库
$result = mysql_query(‘select * from data_base’);//第二个可选参数,指定打开的连接
$row = mysql_fetch_row( $result ) ) //只取一行数据
echo $row[0]; //输出第一个字段的值

 

mysqli(对象方式):
$conn = new mysqli(‘localhost’, ‘user’, ‘password’,’data_base’);
//要使用new操作符,最后一个参数是直接指定数据库
//假如构造时候不指定,那下一句需 要$conn -> select_db(‘data_base’)实现
$result = $conn -> query( ‘select * from data_base’ );
$row = $result -> fetch_row(); //取一行数据
echo row[0]; //输出第一个字段的值

使用new mysqli(‘localhost’, usenamer’, ‘password’, ‘databasename’);会报错,提示如下:Fatal error: Class ‘mysqli’ not found in …

一般是mysqli是没有开启的,因为mysqli类不是默认开启的,win下要改php.ini,去掉php_mysqli.dll前的;,linux下要把mysqli编译进去。

 

三、修改方法:

1.修改连接代码,示例:
$linkID =@mysql_connect($dbHost,$dbUser,$dbPwd);//处理错误,成功连接则选择数据库
if (!$this->linkID) {
exit(“错误警告:<font color=’red’>连接数据库失败,可能数据库密码不对或数据库服务器出错!</font>”);
}
@mysql_select_db($data_base);

更改为:
$pconnect=FALSE;
@list($dbhost,$dbport)=explode(‘:’,$dbHost);
!$dbport && $dbport=3306;
$linkID=mysqli_init();
mysqli_real_connect($linkID,$dbhost,$dbUser,$dbPwd,$pconnect,$dbport);
mysqli_errno($linkID)!=0 && exit(‘错误警告: 链接到MySQL发生错误’);//处理错误,成功连接则选择数据库
if (!$linkID) {
exit(“错误警告:<font color=’red’>连接数据库失败,可能数据库密码不对或数据库服务器出错!</font>”);
}
if (!@mysqli_select_db($linkID,$data_base)) {
exit(‘无法使用数据库’);
}

2.修改查询代码,示例:
$r=mysql_query(‘SELECT * FROM `article` LIMIT 0,10’);
更改为:
$r=mysqli_query($linkID, ‘SELECT * FROM `article` LIMIT 0,10’ );  //$linkID为第一步定义的数据库连接

3.修改其他mysql函数,示例:
包括mysql_fetch_array、mysql_close等,都是将mysql改成mysqli即可。

 

四、总结:
mysqli最大的特点,就是将以前可选的mysql连接参数改成了必选。这样的改变,可以避免很多问题的出现,也有利于规范代码
当然,效率的改善也是一大利器。

 

转载请注明:  蛋蛋个人博客  http://www.92dan.cn/?p=40