【发布时间】:2015-12-25 09:49:13
【问题描述】:
我刚刚开始从旧的已弃用的MySQL 接触MySQLi,最近有人告诉我,我应该学习PDO 而不是MySQLi。我不知道该怎么办!谁来帮帮我!
在网上搜索了很长时间的答案后,我很想看看并了解什么是最好的。
【问题讨论】:
我刚刚开始从旧的已弃用的MySQL 接触MySQLi,最近有人告诉我,我应该学习PDO 而不是MySQLi。我不知道该怎么办!谁来帮帮我!
在网上搜索了很长时间的答案后,我很想看看并了解什么是最好的。
【问题讨论】:
可能重复!但这是我的快速回复。
在最近的 PHP 更新 7.0 中,旧的 MySQL 函数已从 PHP 中删除。这确实意味着大多数人将需要迁移到最新的两个函数:MySQLi 和 PDO。两个函数我都会给分,最后也会给出我个人的想法。
MySQLi 本质上是对 PHP 现已弃用的 mysql_* 函数的改进;但是,这个新函数现在支持预处理语句。
PHP 数据对象,也称为 PDO,是一个通用的数据库抽象层,它支持 MySQL 以及许多其他数据库。它也支持准备好的语句。
What are prepared statements?
使用准备好的语句被认为是良好的编程实践,因为它们对 SQL 注入/攻击具有很强的弹性。这些 SQL 注入漏洞的发生是由于用户输入直接成为 SQL 查询的一部分,而没有对其进行适当的清理。
就我个人而言,我使用 PDO 是因为它的性质。但是上述两个函数中的任何一个都是首选的,因为它们支持准备好的语句。
【讨论】:
我会建议 PDO。最大的原因是,PDO 支持多个数据库。但是,如果您现在只学习 mysql,为什么还要考虑多个数据库呢?原因可能如下:
你现在可能想学习mysql,但以后你也可以对其他数据库感兴趣。例如,您决定将 oracle db 用于您未来的项目之一或任何客户项目。然后你需要学习使用oracle特定的函数,如oci_connect()、oci_execute()等。但是如果你先学习了PDO,你不需要学习任何新的PHP函数来实现它。
在某些情况下,您可能需要更改数据库以获得更好的性能/安全性或项目可能需要的任何其他目的。如果您在 PDO 中,您只需要更新几行 SQL,这可能在两种语言之间有所不同(这不是很多)。但是,如果您有mysqli_* 函数,则需要更新用于数据库目的的每个 PHP 函数。
所以,我只建议你学习mysqli,如果你确定你以后不会使用除mysql之外的任何其他数据库。
【讨论】: