Ver*_*shi 32 php mysql postgresql pdo
当我使用PDO连接到MySQL数据库时,我需要连接的方式是:
$pdoConnection = new PDO("mysql:host=hostname;dbname=databasename",user,password);
Run Code Online (Sandbox Code Playgroud)
但是,对于PostgreSQL,DSN更标准(IMO):
$pdoConnection = new PDO("pgsql:host=hostname;dbname=databasename;user=username;password=thepassword");
Run Code Online (Sandbox Code Playgroud)
MySQL有什么理由不能使用单个字符串吗?或者这只是因为我使用的版本(PHP 5.2,MySQL 5.0,PostgreSQL 8.1)?
Wez*_*ong 89
作为实现这两者的人,我可以告诉你,原因是通过将字符串传递给postgres(和ODBC),这些数据库的PDO驱动程序代码不需要更新,因为底层库添加了新功能.
由于MySQL没有自己的连接字符串解析代码,我们发明了一种机制,用于将数据传递给底层的MySQL函数调用,这些调用具有一个具有固定参数的非常特定的API.
没有意外; 这是非常慎重的.
小智 7
这已在 PHP 7.4 中解决,可以在新特性中看到。
我已经在本地确认了我们可以写:
$dbh = new PDO('mysql:host=localhost;dbname=my_db;charset=utf8mb4;user=root;password=')
Run Code Online (Sandbox Code Playgroud)