【发布时间】:2014-01-26 23:39:57
【问题描述】:
我查看了这个问题的一些相关答案,但找不到适用于这个案例的答案。
$DatabaseConfig = array('DB_TYPE' => 'MySQL',
'DB_HOST' => 'localhost',
'DB_NAME' => 'simpleCMS',
'DB_USER' => 'root',
'DB_PASS' => 'mypass');
$dsn = $this->DatabaseConfig['DB_TYPE'].':host='.$this->DatabaseConfig['DB_HOST'].';dbname='.$this->DatabaseConfig;
我收到了Notice: Array to string conversion,但没有连接。
当我手动插入参数时一切正常。
在这种情况下,我如何将键值转换为字符串?我尝试将(string) 放在不同的地方,但没有运气。
另外,有点不相关,但如果有人想让这个$dsn 不那么冗长一点?我找不到更简洁的设计。
编辑
谢谢大家指出我只是缺少最后一个参数。 Notice: Array to string conversion 不再可见。
然而,我遇到了一个新的致命错误:Fatal error: Call to undefined method PDOException::query()
还有 PDOException:exception 'PDOException' with message 'could not find driver'
但同样,当我手动输入参数时,连接工作正常。
为什么不接受当前格式的$dsn?
【问题讨论】:
-
也许你的本意是
$this->DatabaseConfig = array(...); -
你最后需要
';dbname='.$this->DatabaseConfig['DB_NAME']。 (最后你错过了['DB_NAME']。) -
更新后,您需要发布更多代码。您以某种方式调用了
query()来处理从 PDO 故障中捕获的异常。将代码发布到建立连接的位置,以及调用query()的位置。 -
哦,我不知道PDO驱动是否区分大小写。将其设为小写...
'DB_TYPE' => 'mysql', -
@MichaelBerkowski
'DB_TYPE' => 'mysql'有效。您可能想将其添加到您的答案中,我会接受它。谢谢。
标签: php arrays pdo associative-array