如果密码包含空格,则PDO无法连接

4 php postgresql pdo

我正在使用PDO和PHP制作一个PHP网站,但我的DSN(对于Postgresql)没有连接到数据库,而Mysql工作正常.

我正在尝试使用密码a b c.

错误:异常'PDOException',消息'SQLSTATE [08006] [7]在/var/www/owncloud/pg_test.php:11中的连接信息字符串中的"b"之后缺少"="
堆栈跟踪:
#0/var/www/owncloud/pg_test.php(11):PDO - > __ construct('pgsql:dbname = te ...','test','ab c')
#1 {main}
它正在工作!

示例代码:

<?php

/** createuser -d -R -S -P test
* => set password to "a b c"
*/

$dsn = "pgsql:dbname=test;host=localhost";
$user = "test";
$psw = "a b c";
try{
  $db = new PDO($dsn,$user,$psw);
  echo "Oh gosh!\n";
}catch(PDOException $e){
  echo "Error :" . $e."\n";
}

$e_user = addslashes($user);
$e_password = addslashes($psw);
$psw = $user = null;
$dsn .= ";user='$e_user';password='$e_password'";

try{
  $db = new PDO($dsn,$user,$psw);
  echo "it's working!\n";
}catch(PDOException $e){
  echo "Error :" . $e."\n";
}
Run Code Online (Sandbox Code Playgroud)

Nul*_*teя 10

这是PHP中的一个错误(没有错误#62479),当您尝试使用包含1个或多个空格的密码连接到Postgresql数据库时,pdo将无法连接

你必须使用 goget2me(密码中没有空格)

  • @Daedalus通过修改后的问题补救,由外观.而且,严肃地说,每当我看到一个问题时,PDO似乎更可怕.很好地完成了从这个问题NullPointer发生的事情:-) (2认同)
  • 看起来不是将它放入DSN,而是将其作为用户名和密码提供. (2认同)