PHP:我应该学习MySQL扩展还是学习PDO?

3

我发现PHP的MySQL扩展存在一些潜在的安全漏洞,而且它已经相当老了,那么我不应该学习它,而是应该看看PDO和MySQLi扩展吗?

它们之间有什么真正的区别吗?

学习全部三个扩展会给我带来好处还是只学习其中一个或两个就足够了?

除了一个是过程式的,另一个是面向对象的(我的意思是第二个和第三个扩展),它们有什么不同?


2
当在mysql和pdo之间做出决策时,答案是pdo。但如果你要选择mysqli和pdo,那就不同了。这时候的答案是,如果你需要抽象层,学习pdo,但如果你知道你的数据库不会改变,那就学习mysqli。 - Gordon
@Gordon,如果您知道您的数据库不会更改,使用mysqli的好处是什么?它是否提供了比PDO更好的性能等优点? - Caltor
@Caltor 请查看 https://dev59.com/C3VD5IYBdhLWcg3wVKEb - Gordon
@Gordon,我在发表上面的评论后也发现了这一点。不过还是谢谢你。看起来普遍的共识是PDO更好,但mysqli有微小的速度优势。 - Caltor
2个回答

4
MySQL和MySQLi几乎完全相同。我不知道你是否可以说“学习一个而不是另一个”。实际上,只要你知道自己在做什么,标准的MySQL扩展就没有安全问题,主要是使用mysql_real_escape_string。
PDO很好,我确实建议使用它。使用预处理语句可以消除使用m_r_e_s()的需要。
这三个扩展都不难学习。最困难的部分(与库无关)是学习SQL。

2
MySQLi扩展也完全支持预处理查询。如果您正在使用多个数据库平台(其中通用语法意味着只需学习一种语言),那么我会支持PDO 超过 MySQLi。否则,这取决于个人喜好,因为两者都完全能胜任。 - ircmaxell

1

出于可维护性的原因,我强烈建议在所有新项目中使用PDO。

最简单的方法是扭转局面(我又在玩逆转裁判游戏了)。如果你作为一个维护程序员进入一个使用Postgres的系统,你宁愿学习Postgres PHP扩展,还是只需应用你已经掌握的PDO知识呢?


所以使用PDO让你更容易进行替换? ;) - Caltor

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接