如题,我们通过php的扩展mysqli提供的api访问mysql,提示报错:Class 'mysqli' not found。这个错误的原因是php无法加载php_mysqli.dll这个动态库。解决办法就是配置相关变量,让程序找到这个位置。
默认情况下php_mysqli.dll是存在php安装目录下的ext目录下:
首先需要解决的是修改php的配置文件,windows下的配置文件就在php安装目录下的php.ini,如果没有,可以通过php.ini-development拷贝一份。我们找到其中的 ;extension=php_mysqli.dll,去掉开头的分号,让配置生效。意思是可以使用mysqli扩展。
一般而言,这样做就可以了,但是我们系统如果没有配置环境变量PHPRC的话,我们的配置文件php.ini是不会生效的。为了让php.ini生效,我们需要配置PHPRC这个环境变量,就是指定php安装目录。
配置完了环境变量,我们就可以重启Apache服务器了,我们可以通过phpinfo()来检验我们的php相关的信息,首先配置文件在Loaded Configuration File这一栏中,不在是(none),而是php安装目录下的php.ini。
其次就是mysqli扩展出现在这个页面的中间部分,如果上面两步操作缺一个,这部分就不会显示,当我们在php代码中调用mysqli的API就会报错:
有的说需要将php安装目录下ext中的php_mysqli.dll拷贝到C:\Windows\system32中,这是因为php.ini没有生效,而且,我们还需要将php.ini拷贝到C:\Windows目录下,这个就不太灵活了,以后有了别的扩展,还需要将php的扩展拷贝过去。
接下来,我们可以通过一个程序来查询mysql数据库test中的emp表id和name的相关信息,代码如下:
<?php
$servername = "127.0.0.1";
$username = "root";
$password = "root";
$dbname = "test";
// 创建连接
$conn = new mysqli($servername, $username, $password, $dbname);
// Check connection
if ($conn->connect_error) {
die("连接失败: " . $conn->connect_error);
}
$sql = "SELECT id, name FROM emp";
$result = $conn->query($sql);
if ($result->num_rows > 0) {
// 输出数据
while($row = $result->fetch_assoc()) {
echo "id: " . $row["id"]. " - name: " . $row["name"]. "<br>";
}
} else {
echo "0 结果";
}
$conn->close();
我们在页面上访问这个php文件,得到如下所示的结果:
一个简单的mysqli的应用以及遇到的mysqli扩展的问题就解决了。