PHP 通过扩展模块实现对 MySQL 数据库的操作,在 PHP 5.5 之前使用的是标准扩展 MySQL ,其中所有函数以 mysql_ 开始;5.5 开始引入增强型扩展 MySQLi,所有函数以 mysqli_ 开始。到 7.0 之后 MySQLi 彻底取代  MySQL,也就是在 PHP 7.0 以上的版本中 mysql_ 都要改写为 mysqli_ 了。

但并不是所有情况下都可以简单地加一个 “ i ” 来解决,MySQLi 中的函数似乎变得更加精确而繁多。

比如建立 MySQL 连接并在连接失败时返回错误信息,使用 MySQL 的函数可以这样写:

<?php
if ($_dbc = @mysql_connect('hostname', 'username', 'password')) {
    print '<p>Successfully connect to MySQL!</p>';
    mysql_close($_dbc);
} else {
    print '<p style="color:red;">Could not connect to MySQL:<br />' . mysql_error() . '</p>';
}
?>


而使用 MySQLi 的函数则要这样写:

<?php
if ($_dbc = @mysqli_connect('hostname', 'username', 'password')){
    print '<p>Successfully connect to MySQL!</p>';
    mysqli_close($_dbc);
} else {
    print '<p style="color:red;">Could not connect to MySQL:<br />' . mysqli_connect_error() . '</p>';
}
?>

这里不能再直接使用 mysqli_error(), 而应使用 mysqli_connect_error() ,mysqli_error() 用于成功连接后返回后续操作错误的信息,比如:

<?php
if ($_dbc = @mysqli_connect('hostname', 'username', 'password')) {
    print '<p>Successfully connected to MySql!</p>';
    
    if (@mysqli_query($_dbc, 'CREATE DATABASE databaseName')) {
        print '<p>The database has been created!</p>';
    } else {
        print '<p style="color:red;">Could not create the database because:<br />' . mysqli_error($_dbc) . '</p>';
    }
    
    if(@mysqli_select_db($_dbc,'databaseName')) {
        print '<p>The database has been selected!</p>';
    } else {
        print '<p style="color:red;">Could not select the database because:<br />' . mysqli_error($_dbc) . '</p>';
    }
    
    mysqli_close($_dbc);
} else {
    print '<p style="color:red;">Could not connect to MySQL:<br />' . mysqli_connect_error() . '</p>';
}
?>

使用 mysqli_error() 函数时其参数中必须至少有 MySQL 连接变量名;另外在 mysqli_query() 和 mysqli_select_db() 函数中必须将连接变量作为第一个参数,这些都是和之前的标准扩展函数不尽相同的地方。

 在 MySQLi 中,对应 mysqli_error() 和 mysqli_connect_error() 还有两个函数:mysqli_errno() 和 mysqli_connect_errno() 。相较于前两者以字符串形式返回错误信息,后两者返回的是一个整数型的错误代码。

 posted on 2020-04-14 09:37  Riverman  阅读(131)  评论(0)    收藏  举报