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

Php 如果密码包含空格,则PDO无法连接,php,postgresql,pdo,Php,Postgresql,Pdo,我正在用PDO和PHP制作一个PHP网站,但我的DSN(用于Postgresql)没有连接到数据库,而Mysql运行良好 我正在尝试使用密码abc 错误:异常“PDOException”,在/var/www/owncloud/pg_test.php:11 堆栈跟踪: #0/var/www/owncloud/pg_test.php(11):PDO->_构造('pgsql:dbname=te…','test','abc') #1{main} 它起作用了 : 这是php()中的一个错误,当您尝试使用包

我正在用PDO和PHP制作一个PHP网站,但我的DSN(用于Postgresql)没有连接到数据库,而Mysql运行良好

我正在尝试使用密码
abc

错误:异常“PDOException”,在/var/www/owncloud/pg_test.php:11
堆栈跟踪:
#0/var/www/owncloud/pg_test.php(11):PDO->_构造('pgsql:dbname=te…','test','abc')
#1{main}
它起作用了

:

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


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

您可以发布您正在使用的代码吗?@Blender否我曾经在Postgresql数据库不工作的情况下尝试过此方法,但我尝试过sql@Daedalus,null,blender我该怎么办?-1非常不具体,没有错误消息,没有版本,措辞不清楚,“没有任何研究努力的迹象。”代达罗斯通过修改问题和外表来补救。而且,说真的,每次我看到关于PDO的问题时,PDO看起来都更可怕。很好地解决了这个问题NullPointer:-)看起来不把它放在DSN中,而是把它作为用户名和密码提供确实有效。@scrolllock您可以使用
str\u replace
php函数来删除它spaces@jhonraymos这与删除空间无关。。考虑这样一种情况,即用户有一个具有空白的数据库密码,那么StReShad就没有意义了。它将删除行为类似于a的空间character@NullPointer在这种情况下,您不能做任何事情,因为它是一个bug。您可以在将其插入数据库时删除空格,这样就不会出现未来。。?
<?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";
}