Happy3w

PHP7连接MySql错误"Fatal error: Uncaught Error: Call to undefined function mysql_connect()"

2016.01.11
破坏指数:★★★ 2天学习中断,信心略受影响。 错误现场: Fatal error: Uncaught Error: Call to undefined function mysql_connect() in D:\Program\Apache24\htdocs\hello-mysql.php:5 Stack trace: #0 {main} thrown in D:\Program\Apache24\htdocs\hello-mysql.php on line 5 操作系统:Win7 x64 乐3背景: 新手入门,想学习php,搭建了apache2.4+PHP7.0+MySql5.5环境。 前面已经确认apache+php成功,继续集成MySql,配置MySql时,遭遇此错误袭击。 错误重现: 根据网上的一些资料,进行了如下操作。 1)配置php.ini如下,然后重启apache服务: 文件位置:D:\Program\php7\php.ini
extension_dir = "D:/Program/php7/ext"
extension=php_curl.dll
extension=php_gd2.dll
extension=php_mbstring.dll
extension=php_mysql.dll  
extension=php_mysqli.dll
extension=php_pdo_mysql.dll
extension=php_pdo_odbc.dll
extension=php_xmlrpc.dll
2)创建hello.php作为测试页,代码如下: 文件位置:D:\Program\Apache24\htdocs\hello.php
<!DOCTYPE html>
< html > 
<body>
<?php 
    $dbc= mysql_connection("localhost","root","root","test");
    if(!$dbc)  {
        echo"数据库链接错误!";
    }else{
echo"PHP7搭建:Windows7+PHP7+Apache2.4+MySQL5.5"; } mysql_close(); ?> </body> </html>
3)输入地址http://localhost/hello.php测试,报错如下: 无法显示此页 原因分析: 没有配置mysql扩展前网站好使,于是检查一下extension中的dll是否在目录下都有,发现"php_mysql.dll"没有,于是修改php.ini把"extension=php_mysql.dll"注释掉试试。 再次重启apache服务器,刷新http://localhost/hello.php,页面出现如下错误: Fatal error: Uncaught Error: Call to undefined function mysql_connect() in D:\Program\Apache24\htdocs\hello.php:8 Stack trace: #0 {main} thrown inD:\Program\Apache24\htdocs\hello.php on line 8 意思是没有找到"mysql_connection"函数,其原因似乎是没有"php_mysql.dll",但是怎么会没有这个dll呢。 为了解决此问题,几乎找遍了网络上各种方法,比如配置环境变量,拷贝dll到c\windows目录,重启等等,两、三天过去了,但始终不得解。无奈之下,硬着头皮啃php官网的英文说明书。没啃多久,竟意外找到了答案,现在上菜。 解决方案: 宝典在此:php官网关于mysql说明,有兴趣者可以自行阅读。讲解如下: 1)PHP7已经把"mysql.dll"删除,推荐使用mysqli或者PDO_MySQL 原文如下:
It is recommended to use either the mysqli or PDO_MySQL extensions. It is not recommended to use the old mysql extension for new development, as it was deprecated in PHP 5.5.0 and was removed in PHP 7.
因此,上面设置的php.ini确实应该把"extension=php_mysql.dll"注释掉. 2)mysql,mysqli,PDO扩展所提供的API不同,连接数据库的API如下:
// mysqli
$mysqli = new mysqli("example.com", "user", "password", "database");

// PDO
$pdo = new PDO('mysql:host=example.com;dbname=database', 'user', 'password');

// mysql
$c = mysql_connect("example.com", "user", "password");
mysql_connect是mysql.dll的API,注掉mysql.dll后要改成mysqli,或者PDO方式访问。 3)重新调整,正确配置如下: php.ini文件配置如下,重启apache服务器:
extension=php_curl.dll
extension=php_gd2.dll
extension=php_mbstring.dll
;extension=php_mysql.dll 已经被php7删除
extension=php_mysqli.dll
extension=php_pdo_mysql.dll
extension=php_pdo_odbc.dll
extension=php_xmlrpc.dll
hello.php代码修改如下:
<!DOCTYPE html>
<html>
<body>
<?php 
    $dbc= new mysqli("localhost","root","root","test");
    if(!$dbc)  {
        echo"数据库链接错误!";
    }else{
        echo"PHP7搭建:Windows7+PHP7+Apache2.4+MySQL5.5";
    }
    mysqli_close($dbc);
?>
</body>
</html>
4) 打开http://localhost/hello.php显示正常,页面如下。 PHP7搭建:Windows7+PHP7+Apache2.4+MySQL5.5 -------乐3悟:多读原著,少copy,注意版本。------------