比较MySQL 和MySQLi的区别

比较MySQL 和MySQLi的区别

在使用PHP编写Web应用程序时,MySQL是最受欢迎的数据库之一。然而,有些开发人员可能对使用哪种MySQL API(应用程序编程接口)来连接数据库感到困惑。本文将比较MySQL 和MySQLi,它们各有优缺点,以帮助您选择最适合您的应用程序的选项。

阅读更多:MySQL 教程

MySQL API

MySQL API是PHP中连接MySQL数据库的原始方法。以下是使用MySQL API连接数据库(在本例中使用root用户名和密码)的示例代码:

$conn = mysql_connect("localhost", "root", "password");
mysql_select_db("myDatabase", $conn);

mysql_connect 函数与数据库建立连接,而 mysql_select_db 函数选择您希望使用的数据库。一旦建立连接并选择了数据库,您可以使用其他 mysql_ 函数从中检索或写入数据。

MySQLi API

MySQLi是一种新的(在PHP 5之后添加)MySQL API,具有比MySQL API更丰富的功能。以下是使用MySQLi API连接数据库的示例代码:

$conn = mysqli_connect("localhost", "root", "password", "myDatabase");

与MySQL API不同,MySQLi API在连接串中指定了要使用的数据库。该库提供了多个选项来处理大量连接,允许使用预备语句(prepared statements)等功能。

以下是MySQLi API的另一些功能:

  • 支持多个语句同时执行
  • 支持事务
  • 支持存储过程
  • 对面向对象编程的支持更友好

性能

MySQLi API是比MySQL API更快的API。这部分归功于MySQLi API在连接池管理方面的优化,以及通过绑定变量实现的预备语句的使用。

我们在下面提供了一个简单的基准测试,其中13,000个查询被执行了两次,一次使用MySQL API,另一次使用MySQLi API。

API Time (seconds)
MySQL 10.658
MySQLi 1.130

从上表可以看出,MySQLi API比MySQL API快了9倍。

安全

MySQLi API具有比MySQL API更好的安全性。在MySQLi API中,可以使用预备语句和绑定参数的方式来防止SQL注入攻击。SQL注入攻击可以通过在“查询”中注入恶意代码,使它执行不受欢迎的操作或泄漏敏感数据。以下是使用MySQLi API的更安全的代码示例:

$stmt = $conn->prepare("SELECT * FROM users WHERE username=? AND password=?");
$stmt->bind_param("ss", $username, $password);
$stmt->execute();

概括

在使用PHP时,MySQLi API是更好的API选择。与MySQL API相比,它具有更好的性能和安全性,并且提供的功能更加丰富。 MySQL API仍然可以用于旧版本的PHP(例如,PHP 4),但是MySQLi API应该是对以后进行开发的SQL连接API的首选。

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程