PHP——连接MySQL报错Fatal error: Call to undefined function mysql_connect() in xxx on line n

一、问题描述

使用 PHP5连接数据库时报错Fatal error: Call to undefined function mysql_connect() in xxx on line n
在这里插入图片描述

PHP代码如下:

<?php
$uid = $_GET['id'];
$sql = "SELECT * FROM userinfo where id=$uid";
$conn = mysql_connect('localhost:3306','root','root');
mysql_select_db("test",$conn);
$result = mysql_query($sql,$conn);
print_r('当前SQL语句:'.$sql.'<br/>结果:');
print_r(mysql_fetch_row($result));

二、解决方法

php.ini未开启相关拓展功能

打开php目录下的php.ini配置文件,搜索mysql,将以下两项前面的分号去除,表示开启:
在这里插入图片描述
再搜索extension_dir,将On Windows下的分号去除:
在这里插入图片描述
重启服务器即可访问MySQL

<think>我们正在解决用户的问题:如何修复PHPmysqli_connect()函数未定义的错误。根据引用[3]:用户遇到了调用未定义函数mysql_connect的问题,并且提到了如何配置php.ini文件。同引用[2]提到了mysqli扩展需要传递连接对象作为查询的第一个参数。分析问题:mysqli_connect()函数未定义,通常是因为PHPmysqli扩展没有启用。解决方案步骤:1.确保PHP安装目录下的ext文件夹中有php_mysqli.dll文件(对于Windows)或对应的扩展(对于Linux)。2.修改php.ini文件,启用mysqli扩展。3.重启Web服务器。详细步骤:对于Windows:1.打开php.ini文件(通常在PHP安装目录下)。2.搜索`;extension=mysqli`,去掉前面的分号(;)以取消注释。3.确保`extension_dir`指向正确的扩展目录,例如:`extension_dir ="C:\php\ext"`(根据实际路径调整)。4.保存php.ini文件,并重启Apache或IIS等Web服务器。对于Linux(例如Ubuntu):1.安装mysqli扩展(如果尚未安装):```bashsudoapt-getinstall php-mysqli```2.重启Web服务器(如Apache):```bashsudoservice apache2restart```另外,引用[2]还提到了使用mysqli_query需要注意传递连接对象作为第一个参数,因此修复扩展后,代码也需要相应调整。示例代码:原mysql_connect代码:```php$link= mysql_connect('localhost', 'user','password'); mysql_select_db('database', $link);$result =mysql_query('SELECT* FROMtable',$link); ```修改为mysqli后: ```php$link =mysqli_connect('localhost','user', 'password','database'); $result =mysqli_query($link, 'SELECT *FROM table'); ```注意:mysqli_connect的第四个参数可以直接指定数据库,或者使用mysqli_select_db()函数。如果按照以上步骤操作后仍然出现未定义函数的错误,请检查:-php.ini文件修改后是否保存,并且是Web服务器使用的php.ini(注意可能有多个php.ini文件,分别用于命令行和Web服务器)。-重启Web服务器是否成功。 -通过phpinfo()函数查看mysqli扩展是否已经启用。如果问题仍然存在,请检查PHP版本是否支持mysqli,以及扩展文件是否存在。生成相关问题:1.如何检查PHP是否启用了mysqli扩展?2.如何将旧的mysql代码迁移到mysqli?3.PHP连接MySQL数据库的其他方式有哪些?4.如何处理mysqli连接错误?5.使用mysqli如何防止SQL注入?</think>### PHPmysqli_connect()函数未定义错误的修复方法 出现`mysqli_connect()`未定义函数错误,通常是由于PHPmysqli扩展未正确启用或配置导致的。以下是系统性的解决步骤: #### 🔧 1. **启用mysqli扩展** 在`php.ini`配置文件中取消注释相关行: ```ini ; 找到并移除行首的分号 extension=mysqli ``` 对于Windows系统还需确认扩展目录路径: ```ini extension_dir = "C:\php\ext" ; 指向实际dll文件所在目录 ``` #### 🔄 2. **重启Web服务** 修改配置后必须重启: - **Apache**:`sudo service apache2 restart` (Linux) 或通过服务管理器重启 (Windows) - **Nginx**:`sudo systemctl restart nginx && sudo systemctl restart php-fpm` #### 🧪 3. **验证扩展状态** 创建测试文件`info.php`: ```php <?php phpinfo(); ?> ``` 访问该文件,搜索"mysqli"确认扩展已加载(应显示mysqli支持为"enabled")。 #### ⚠️ 4. **解决依赖问题** - **Windows**:确保`php_mysqli.dll`和`libmysql.dll`存在于`ext`目录 - **Linux**:安装扩展包: ```bash sudo apt install php-mysqli # Debian/Ubuntu sudo yum install php-mysqli # CentOS/RHEL ``` #### 📝 5. **代码迁移注意事项** 从`mysql_`迁移到`mysqli_`需调整参数顺序[^2]: ```php // 错误:缺少连接参数 mysqli_query("UPDATE table SET field=value"); // 正确写法 $conn = mysqli_connect("host","user","pass","db"); mysqli_query($conn, "UPDATE table SET field=value"); ``` #### 🚨 常见错误场景 - **扩展目录错误**:`extension_dir`指向无效路径[^3] - **多PHP版本冲突**:修改的`php.ini`与实际运行版本不匹配 - **缺少ODBC驱动**:Windows需安装[Microsoft ODBC Driver](https://aka.ms/downloadmsodbcsql)[^4] #### ✅ 验证连接代码 ```php <?php $conn = mysqli_connect("localhost", "user", "password", "database"); if (mysqli_connect_errno()) { echo "连接失败: " . mysqli_connect_error(); } else { echo "mysqli扩展工作正常!"; } ?> ``` --- ### 相关问题 1. 如何在Windows系统下配置PHP的多个扩展? 2. mysqli和PDO连接MySQL的主要区别是什么? 3. 迁移旧版`mysql_`代码到`mysqli`需要注意哪些语法变更?[^2] 4. 如何通过phpinfo()诊断扩展加载问题? 5. PHP连接SQL Server与MySQL的配置有何不同?[^4] [^1]:mysql扩展已被弃用,应迁移至mysqli或PDO [^2]: mysqli_query()要求连接对象作为第一参数 [^3]: 需确保扩展目录配置正确且dll文件存在 [^4]: Windows连接数据库需ODBC驱动支持
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值