使用FETCH_ALL时,PDO :: fetchAll()不返回记录

时间:2015-07-31 15:48:47

标签: php pdo

我是PHP编程的新手,但过去曾在.NET中编写应用程序。我正在运行一个检索结果集作为对象的示例。例如,我在名为myClass.php的文件中有如下所示的类:

<?php
namespace MyNameSpace;

Class myClass{
   private $var1
           , $var2;

public function __constructor(){

}

//getters and setters for private variables below
} //end myClass

在另一个课程中,我有以下内容:

<?php
namespace OtherSpace;

require_once 'myClass.php';

$connection = new PDO($dsn, $user, $pwd);
$query = 'SELECT var1, var2 FROM someTable';
$statement = $connection->prepare($query);

$statement->execute();
$statement->setFetchMode(PDO::FETCH_CLASS, 'myClass');

$result = $statement->fetchAll();

print_r($result);
} // end class

但是,没有任何内容发送到浏览器窗口。如果我从上面的代码中删除了setFetchMode语句,那么我会将标准结果集数组发送回浏览器。

我不明白我在做什么会阻止结果集加载到myClass对象的数组中。

感谢您的帮助。

2 个答案:

答案 0 :(得分:1)

您在new PDO命名空间中创建\OtherSpace。它应该是\PDO,或者您应该在use PDO;之后的文件开头使用namespace OtherSpace;

也许myClass有同样的问题,因为它位于\MyNameSpace而不是\OtherSpace

$statement->setFetchMode(\PDO::FETCH_CLASS, '\MyNameSpace\myClass');

因此请使用类的全名。

答案 1 :(得分:0)

您正在使用命名空间,您必须告诉PDO命名空间名称:

$statement->setFetchMode(PDO::FETCH_CLASS, 'MyNameSpace\myClass');

方法不知道它们被调用哪个命名空间,只知道它们自己的。

相关问题