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目前正常 .