0x01 前言
PHP7不再兼容mysql系列函数,入mysql_connect等操作,强行操作报错:Uncaught Error: Call to undefined function mysql_connect(),所以我们要采用mysqli系列的操作mysql方式,让PHP7兼容mysql_connect操作有两种方式,一种是安装mysql扩展,另一种是在代码层定义mysql_connect等函数,来兼容原来的操作,当然,这种操作只是自己定义了函数,内部操作还是mysqli系列的。
0x02 兼容代码
将下面的代码放在入口文件引入即可:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 |
$dbhost = DATA_HOST; $dbport = 3306; $dbuser = DATA_USERNAME; $dbpass = DATA_PASSWORD; $dbname = DATA_NAME; if(!function_exists('mysql_connect')){ function mysql_connect($dbhost, $dbuser, $dbpass){ global $dbport; global $dbname; global $mysqli; $mysqli = mysqli_connect("$dbhost:$dbport", $dbuser, $dbpass, $dbname); return $mysqli; } function mysql_select_db($dbname){ global $mysqli; return mysqli_select_db($mysqli,$dbname); } function mysql_fetch_array($result){ return mysqli_fetch_array($result); } function mysql_fetch_assoc($result){ return mysqli_fetch_assoc($result); } function mysql_fetch_row($result){ return mysqli_fetch_row($result); } function mysql_query($query){ global $mysqli; return mysqli_query($mysqli,$query); } function mysql_escape_string($data){ global $mysqli; return mysqli_real_escape_string($mysqli, $data); } function mysql_real_escape_string($data){ return mysql_real_escape_string($data); } function mysql_close(){ global $mysqli; return mysqli_close($mysqli); } } |
上面的代码摘自Discuz X3.2 对 PHP7 的兼容性处理,原理还是很简单的。