PDO中的虚假陈述

时间:2011-12-18 18:13:25

标签: php pdo

我正在尝试运行这个简单的查询:

try {
    $dsn = "mysql:host=localhost;dbname:mydb";
    $PDO = new PDO($dsn, 'root', '');
    $statement = $PDO->query("SELECT * FROM posts");
    var_dump($statement);  
} catch (PDOException $e) { exit($e->getMessage()); }

并输出:

bool(false) 

我真的生气了这个错误。我试图在我的数据库上运行查询。 $PDO是一个PDO对象,因此从技术上讲它连接到数据库。似乎所有专业功能都没有出错。在phpmyadmin上从$PDO->query()运行复制和粘贴的查询会返回2条记录的列表。我不知道该怎么做才能认真对待。我开始拉头发用头撞墙(这不是比喻)。 我做错了什么?

2 个答案:

答案 0 :(得分:5)

您有DSN问题。

dbname:mydb

应该是

dbname=mydb

你不喜欢编程吗?


除了上述声明之外,您还应该在PDO属性中启用例外。通过在连接后添加以下语句来完成:

$PDO->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

进一步的分数

  • 命名惯例 - 变量名称小写字母开头,这是一种公认​​的命名惯例,每个连续的单词都在 Camel Case 中,或使用下划线
    示例:$pdo$databaseConnection $awesomeMultipleWordedVariable$another_awesome_multiple_worded_variable

答案 1 :(得分:1)

您应该启用PDO例外:

$PDO->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);