php db变量中的下划线导致问题

dav*_*vid 5 php mysql pdo mysql-error-1045

我将数据库的所有登录信息存储在公共树之外的文件中,例如

$hostname = '172.0.0.0';
$dbname = 'myname_mydbname';
$username = 'myname_user';
$pw = 'password';
Run Code Online (Sandbox Code Playgroud)

这是非常标准的.

问题是我正在使用的这个特定主机需要myname_附加到所有数据库和用户名的前面.当我存储这些字符串并将它们传递给PDO时,它会删除myname后的用户名中的所有内容,并将密码字符串全部放在一起...如果我将用户名和密码作为字符串而不是变量放在函数中,一切正常.我没办法.有人可以帮忙吗?这是函数,因为它在代码中.

不起作用:

$this -> DB = new PDO ("mysql:host={$hostname}; dbname={$dbname}", $username, $pw);
Run Code Online (Sandbox Code Playgroud)

作品:

$this -> DB = new PDO ("mysql:host={$hostname};dbname={$dbname}", 'myname_user', 'password');
Run Code Online (Sandbox Code Playgroud)

我希望有人在这里可以让我感到愚蠢......提前谢谢.-大卫

错误可能会有所帮助......

无法获得数据库句柄:SQLSTATE [28000] [1045]访问被拒绝用户'myname'@'localhost'(使用密码:否)

tob*_*ies 0

我在 PDO 文档中找不到任何内容表明您可以在 DSN 字符串中指定用户名或密码 - 它是“数据库源名称”而不是“数据库源名称和身份验证”字符串,您不使用密码的事实应该是一个提示用户名“myname”可能只是因为大多数 RDBM 在未指定的情况下使用 $USER 环境变量进行连接(我必须假设设置为“myname”)

即我认为您只需使用额外的参数来传递身份验证凭据