php7.0抛弃mysql_connect()后的解决方案 升级到mysqli_connect()

PHP7.O完全抛弃了mysql_connect() , 借口是不安全 , 实际是从PHP7.0这个版本起 , 一边倒的奔跑在全面抄袭JAVA路上 .php

那么 , 如何平滑升级呢 :mysql

PHP5.X时 , 使用mysql_connect()的方式以下:sql

//链接数据库 5.X
$db_cn = mysql_connect($servername , $dbusername , $dbpassword) OR die ('咱们有个大麻烦!---> 没法登陆MYSQL服务器!');

mysql_select_db($dbname , $db_connect) OR die('咱们有个大麻烦!---> 没法链接数据库!');

//设置数据库格式为UTF8
mysql_query("SET NAMES 'UTF8'");

由于mysql_query()是默认链接上一次数据库 , 而mysql_connect()能与PHP同步释放 , 这样就有两个好处 , 一是无需写mysql_close() , 由于是由PHP自动close的 , 二是mysql_query()能够在任意层级的函数里能够随意使用 , 很是方便 , 故尔虽然PHP5.X早就有mysqli和PDO , 可是大部分程序仍然坚持使用mysql_connect()来链接数据库  .数据库

PHP7.X时 , 升级 , 使用mysqli_connect()的方式以下:安全

//链接数据库 7.0
$db_cn = mysqli_connect($servername , $dbusername , $dbpassword , $dbname) OR die ('咱们有个大麻烦!---> 没法登陆MYSQL服务器!');

//$db_cn转为全局变量
global $db_cn;

//设置数据库格式为UTF8 
mysqli_query($db_cn , "SET NAMES 'UTF8'");

//函数内调用mysqli_query
function test(){
    $sql = "SET NAMES 'UTF8'";

    //$GLOBALS['db_cn']这里为函数内调用全局变量$db_cn的方式
    mysqli_query($GLOBALS['db_cn'] , $sql);
}

其中:服务器

[1] mysqli_connect($servername , $dbusername , $dbpassword , $dbname) 相较 mysql_connect()后面多了一个参数为数据库名 .函数

[2] mysqli_select_db() 多余 , 不须要了 , 删除 .测试

[3] global $db_cn; 升$db_cn为全局变量 , global是关键字 .fetch

[4] mysqli_query($db_cn , "SET NAMES 'UTF8'") 有两个参数 , 强制性的 , 没有会报错 , 一是数据库链接 , $db_cn , 二是sql拼接 .spa

[5] 在函数内使用则为mysqli_query($GLOBALS['db_cn'] , $sql) , 其中$GLOBALS['db_cn']是对全局变量$db_cn的调用 , 直接写mysqli_query($db_cn , $sql)是错误的 , 升级时 , 这里是关键 , 将前写法 mysql_query($sql) 替换为 mysqli_query($GLOBALS['db_cn'] , $sql) , 即 替换 "mysql_query(" 为"mysqli_query($GLOBALS['db_cn'] , " .

[6] mysql_fetch_array($result , MYSQL_ASSOC) 应用 mysqli_fetch_array($result , MYSQLI_ASSOC)来替换 , 注意后面的参数 MYSQLI_ASSOC .

[7] 其余的 mysql_* 函数基本能用 mysqli_* 来替代 , 没时间测试 , 请诸位本身摸索 .

[8] mysqli__connect()是持久链接 , 在PHP程序尾部须要增长 mysqli_close() 关闭数据库链接 .

尾记: 以上是我的认为最平滑的升级方式 , 于2019年07月07日升级老程序后在WAMP下PHP7.0目前正常 .

相关文章
相关标签/搜索