当前位置:  开发笔记 > 编程语言 > 正文

为什么PHP PDO DSN与MySQL和PostgreSQL的格式不同?

如何解决《为什么PHPPDODSN与MySQL和PostgreSQL的格式不同?》经验,为你挑选了1个好方法。

当我使用PDO连接到MySQL数据库时,我需要连接的方式是:

$pdoConnection = new PDO("mysql:host=hostname;dbname=databasename",user,password);

但是,对于PostgreSQL,DSN更标准(IMO):

$pdoConnection = new PDO("pgsql:host=hostname;dbname=databasename;user=username;password=thepassword");

MySQL有什么理由不能使用单个字符串吗?或者这只是因为我使用的版本(PHP 5.2,MySQL 5.0,PostgreSQL 8.1)?



1> Wez Furlong..:

作为实现这两者的人,我可以告诉你,原因是通过将字符串传递给postgres(和ODBC),这些数据库的PDO驱动程序代码不需要更新,因为底层库添加了新功能.

由于MySQL没有自己的连接字符串解析代码,我们发明了一种机制,用于将数据传递给底层的MySQL函数调用,这些调用具有一个具有固定参数的非常特定的API.

没有意外; 这是非常慎重的.


你不能和韦兹的答案争论......这怎么还没被接受呢?:)
我不明白.如果你不得不解析MySQL的字符串,为什么不解析DSN的用户名和密码?现在我们必须使用多个字段而不仅仅是连接字符串; 或解析并从半有效的mysql DSN中删除用户名/密码; 或者发明一种适用于两者的新连接字符串格式.这些解决方案中的任何一个都易于实现,但必须在用户空间中为每个使用PDO的库实现.啊.
感谢您的回应,为可怕的设计感到羞耻.DSN背后的整个想法是采用标准格式,这种选择打破了最受欢迎的引擎之一.
推荐阅读
有风吹过best
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有