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
浙公网安备 33010602011771号