MySQL 从mysql连接移植到mysqli
在使用MySQL数据库时,PHP开发人员经常使用mysql连接函数来连接数据库并执行查询。但随着PHP 5.5版本的发布,该函数已被弃用,并从PHP 7开始已经被删除。取而代之的是mysqli类,它提供了更强大的功能和更好的性能。
在这篇文章中,我们将介绍如何将你的MySQL连接从mysql连接函数移植到mysqli类。
阅读更多:MySQL 教程
为什么要使用mysqli
mysqli比mysql连接更好,因为它具有以下优点:
- 支持面向对象的编程方式。
- 提供了更多的API函数。
- 具有更好的性能和安全性。
- 能够处理更多的数据库操作,如预备语句和存储过程。
从mysql连接到mysqli:连接数据库
mysql连接
在php 5.5之前,可以使用以下方法连接到MySQL数据库:
$link = mysql_connect('localhost', 'username', 'password');
mysql_select_db('database_name', $link);
这将建立到MySQL服务器的连接,并选择要使用的数据库。
mysqli连接
mysqli提供了两种连接方法:面向过程和面向对象。下面是使用面向过程的mysqli连接方法:
$link = mysqli_connect('localhost', 'username', 'password', 'database_name');
这将建立到MySQL服务器的连接,并选择要使用的数据库。
以下是使用面向对象的mysqli连接方法:
$mysqli = new mysqli('localhost', 'username', 'password', 'database_name');
这将创建一个mysqli对象,其中包含与MySQL服务器的连接。
发送查询
mysql连接
在php 5.5之前,可以使用mysql_query函数发送查询:
$result = mysql_query('SELECT * FROM table_name');
该函数将执行所提供的查询并返回结果集。
mysqli连接
以下是使用面向过程的mysqli_query方法发送查询:
$result = mysqli_query($link, 'SELECT * FROM table_name');
该函数将执行所提供的查询并返回结果集。
以下是使用面向对象的mysqli_query方法发送查询:
$result = $mysqli->query('SELECT * FROM table_name');
该函数将执行所提供的查询并返回结果集。
请注意,在面向对象的mysqli_query方法中,$mysqli是mysqli对象的实例。
从结果集中提取数据
mysql连接
在php 5.5之前,可以使用mysql_fetch_array函数从结果集中提取数据:
while(row = mysql_fetch_array(result)) {
echo $row['column_name'];
}
该函数将从结果集中获取一行,并将其作为关联数组返回。
mysqli连接
以下是使用面向过程的mysqli_fetch_array方法从结果集中提取数据:
while(row = mysqli_fetch_array(result)) {
echo $row['column_name'];
}
以下是使用面向对象的mysqli_fetch_array方法从结果集中提取数据:
while(row =result->fetch_array()) {
echo $row['column_name'];
}
请注意,在面向对象的mysqli_fetch_array方法中,$result是mysqli_result对象的实例。
预备语句
预备语句可以防止SQL注入攻击,并提高查询性能。以下是使用mysqli预备语句的示例:
$stmt = $mysqli->prepare("SELECT * FROM table_name WHERE column_name1 = ? AND column_name2 = ?");
$stmt->bind_param("ss", $value1, $value2);
$value1 = "value1";
$value2 = "value2";
$stmt->execute();
在这个例子中,将创建一个准备好的语句,并将绑定参数。然后,执行查询。
存储过程
存储过程是一个在MySQL数据库中定义的函数。以下是使用mysqli存储过程的示例:
$stmt = $mysqli->prepare("CALL sp_name(?, ?)");
$stmt->bind_param("ss", $value1, $value2);
$value1 ="value1";
$value2 = "value2";
$stmt->execute();
在这个例子中,将创建一个准备好的语句,调用存储过程,并绑定参数。然后,执行存储过程。
错误处理
mysqli提供了更可靠的错误处理方法,使得开发人员可以更容易地解决问题。以下是使用mysqli错误处理方法的示例:
if (mysqli->connect_errno) {
echo "Failed to connect to MySQL: " .mysqli->connect_error;
}
if (!result =mysqli->query("SELECT * FROM table_name")) {
echo "Query failed: " . $mysqli->error;
}
在这个例子中,将检查连接是否失败,并输出错误消息。如果查询失败,则输出错误消息。
总结
在本文中,我们介绍了mysqli类,它提供了更强大的功能和更好的性能。我们还介绍了如何从mysql连接函数移植到mysqli类,包括连接到数据库,发送查询,从结果集中提取数据,使用预备语句和存储过程以及错误处理。如果你想更好地使用MySQL数据库,并提高你的PHP应用程序的性能和安全性,那么使用mysqli是一个不错的选择。
极客教程