为什么PDO构造函数不将host,dbname,数据库类型等作为常规函数参数?

时间:2012-02-02 20:47:11

标签: php pdo

我正在学习PDO,构造函数似乎使用非正统且不一致的方式来获取参数。即:

$dbh = new PDO("mysql:host=$host;dbname=$dbname", $user, $pass);

为什么与通常的格式不同:

$dbh = new PDO("mysql", $host, $dbname, $user, $pass);

或者由于前两个参数(host和dbname)被写为一个长字符串,为什么不继续使用剩下的两个参数呢?即:

$dbh = new PDO("mysql:host=$host;dbname=$dbname;user=$user;pass=$pass");

2 个答案:

答案 0 :(得分:4)

DSN描述了数据源所在的位置以及如何连接数据源。用户和传递是身份验证参数,对访问数据源的方式没有任何影响。

拥有用户并传入DSN就像要在您要访问的网站的网址中输入您的用户名和密码。

答案 1 :(得分:0)

PDO使用DSN进行连接,用户名和密码是DSN字符串的可选参数。

结帐http://www.php.net/manual/en/pdo.construct.php

我真的不认为这是“非正统或不一致”,PHP中的ODBC使用相同的过程。