php - 我应该将我的网站升级到 PHP MySQLi 还是 PDO?

标签 php mysql mysqli pdo

我在 5 年前使用 PHP MySQL 设计了一个网站,并且仍然可以正常运行,没有任何问题。我听说 MySQL 从 PHP 5.5 开始正式弃用,并从 PHP 7 开始删除。此外,PHP 提供了三种不同的 API 来连接到 MySQL(如 MySQL、MySQLi 和 PDO)。我的网络服务器经常更新。

我明白了,为了安全起见,我必须转向更新的 API,例如 MySQLi 或 PDO。现在很迷茫是选择MySQLi还是PDO。另外,是否有适用于这种情况的兼容性/迁移选项?

最佳答案

让我们来看看这两个扩展。

PDO

PDO 是数据库中立的——你只需要学习一个 API 就可以处理几十个 databases

因此,如果您决定迁移到另一个数据库,唯一需要更改的就是 DSN(数据源名称)。

同时支持名称和“?”准备好的语句的占位符。

Drupal 使用 PDO。

Mysqli

另一方面,Mysqli 是专门为 Mysql 数据库设计的,是 Mysql 推荐的。 Mysqli 适用于 Mysql 和 MariaDB 数据库。

仅支持 '?'准备好的语句的占位符。

Joomla 使用 Mysqli

结论

关于 Mysqli 或 PDO 运行速度更快的争论有很多。 Mysqli 和 PDO 使用相同的底层驱动程序访问数据库,因此性能不值得比较。

因此在使用 Mysqli 或 PDO 时没有明显的赢家。但是假设你使用 Mysqli,然后你想使用另一个数据库,这将是一个困难的转换。

PDO 优于 Mysqli 的主要优势是准备好的语句的名称占位符,这就是我选择 PDO 而不是 Mysqli 的原因。

关于php - 我应该将我的网站升级到 PHP MySQLi 还是 PDO?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35621448/

相关文章:

php - mysqli bind_param 变量数量与准备好的语句中的参数数量不匹配

php - PDO 中的预处理语句真的能提高安全性吗?

php - 将 Laravel Socialite 与 API 一起使用?

mysql - 从列 char(1) 中获取全部值

mysql - 更新mysql数据库中的日期

php - 如何向 sqlmap 添加用户名和密码?

php - 命名空间内的 Mysqli

javascript - "Unhandled Rejection (SyntaxError): Unexpected token h in JSON at position 0"与response.json()

php - 连接到 MySQL 权限被拒绝

sql - MySQL 转储错误 1064 (42000)