php? PDO 或 mySQLi [重复]

Posted

技术标签:

【中文标题】php? PDO 或 mySQLi [重复]【英文标题】:Php? PDO or mySQLi [duplicate] 【发布时间】:2015-06-17 09:35:04 【问题描述】:

只是编写一个 php 网站并使用 mysqli 进行数据库连接。真的很享受它,因为我可以使用 Prepare 语句,然后执行 $result = $stmt->get_result(); 将结果加载到关联数组中。但是,认为最好是时候将一些页面和数据库上传到托管站点以测试速度等发现它不支持$stmt->get_result(); 命令,它需要使用我的主机不支持的 mysqlnd 驱动程序.

许多主机提供商也对此进行了调查。现在,当我启动网站时,我回顾了一些旧的 PHP 代码,显然我以前使用的普通 mySql 代码已经过时,并且在互联网上被告知要使用 mySQLi,只是发现对此的支持正在下降到?!所以它会看到,那么最好的 mySql 连接是什么?

【问题讨论】:

【参考方案1】:

我根本不会使用任何旧的mysql 连接器。由于巨大的安全漏洞,它们已被弃用。至于是使用mysqli还是PDO的prepared statements,这是一个选择问题;他们都很安全。 mysqli 很好,只要您使用准备好的语句并且不依赖转义变量(这是一个巨大的痛苦并且容易出错,因此不那么安全)。

使用PDO 的优点是更容易在不同的数据库类型之间移动(例如,如果您想使用 Oracle 或 SQL Server 或 PostreSQL),更容易进行转换,并且如果你喜欢和班级一起工作。在这个网站上你通常会发现更多喜欢PDO的人。

还支持mysqlnd?请参阅官方网站的以下文档:

PHP 5.4 默认使用 mysqlnd

从 PHP 5.4 开始,mysqlnd 库是 php.net 编译时的默认值 到所有 PHP MySQL 扩展。此外,php.net Windows 团队正在使用 mysqlnd 用于官方 PHP Windows 发行版,因为 mysqlnd 成为 在 PHP 5.3 中可用

换句话说,那些网络托管服务提供商已经落后于时代。您可能想寻找更好的。

【讨论】:

【参考方案2】:

模糊的问题,但考虑到标题,mysqli 和 PDO 是一回事(几乎相同)。

PDO 与平台无关,但 mysqli 仅适用于 mysql 数据库引擎。如果您不打算像一些 SaaS 应用那样制作企业级应用程序,那么我建议使用 mysqli。

如果您的应用程序始终是 php 和 mysql,那么为什么还要使用 PDO?使用它并没有太大的好处。

我不同意 mysqli 不那么安全的 nomistic。 PDO 和 mysqli 都可以有未准备好的查询。两者同样安全。

PDO 有一个我喜欢的好处,Named Parameter 在准备好的语句中。所以 PDO 领先一步。

你可能会喜欢这篇文章: pdo-vs-mysqli-which-should-you-use

【讨论】:

我并没有说它不安全,除了编码中可能出现人为错误。我说过,使用转义值的人为因素的危险可能会导致错误。只要您使用准备好的语句,它就一样安全:)

以上是关于php? PDO 或 mySQLi [重复]的主要内容,如果未能解决你的问题,请参考以下文章

防止 SQL 注入 - PDO,mysqli [重复]

安全问题:Mysqli vs PDO [重复]

在php中停止不推荐使用的警告[重复]

两个插入,两个表,一个PDO事务,双SQL结果[重复]

SQLSTATE [42000]:语法错误或访问冲突:1064 您的 SQL 语法有错误 — PHP — PDO [重复]

php mysqli在嵌套循环中准备语句抛出命令或同步错误[重复]