我正在学习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");
答案 0 :(得分:4)
DSN描述了数据源所在的位置以及如何连接数据源。用户和传递是身份验证参数,对访问数据源的方式没有任何影响。
拥有用户并传入DSN就像要在您要访问的网站的网址中输入您的用户名和密码。
答案 1 :(得分:0)
PDO使用DSN进行连接,用户名和密码是DSN字符串的可选参数。
结帐http://www.php.net/manual/en/pdo.construct.php
我真的不认为这是“非正统或不一致”,PHP中的ODBC使用相同的过程。