【发布时间】:2015-03-01 15:49:27
【问题描述】:
所以我是 PHP 新手,尤其是 PDO 世界。 我正在使用 PDO 从表中选择一些数据并从这些数据中创建一个对象。我已经成功使用 PDO 创建了一个默认对象并访问了结果。这是获取默认对象的 fetch 语句,按预期工作:
$stmt->execute();
$result = $stmt->fetch(PDO::FETCH_OBJ);
接下来我要做的是获取结果并从我创建的预定义类中创建一个自定义对象。我将以下语句基于我用于第一个语句的内容,但是,这不起作用
$stmt->execute();
$user_object = $stmt->fetch(PDO::FETCH_CLASS | PDO::FETCH_PROPS_LATE, 'classname');
我通过在 fetch 方法之外设置 fetch 模式让它工作,可以在这里看到:
$stmt->execute();
$stmt->setFetchMode(PDO::FETCH_CLASS| PDO::FETCH_PROPS_LATE,'classname');
$object = $stmt->fetch();
我查阅了 PHP 手册,但我不明白为什么我不能有像第二个这样的语句,即在 fetch 语句中设置 fetchmode。
谢谢
更新
以下声明:
$user_object = $stmt->fetch(PDO::FETCH_CLASS | PDO::FETCH_PROPS_LATE, 'classname');
var_dump($stmt->errorInfo());
var_dump($user_object);
返回 -
array(3) { [0]=> string(5) "00000" [1]=> NULL [2]=> NULL } bool(false)
【问题讨论】:
-
详细说明这不起作用这句话可能会有所帮助。例如。你收到错误了吗?
fetch()是否返回false?还是它返回了一个对象但未达到预期? -
抱歉没有抛出错误,但是当我使用
var_dump($object)它返回一个bool(false)表明我的对象尚未创建 -
PDO
errorInfo()方法有什么启示吗? -
顺便说一句,编辑您的问题以包含这些额外的详细信息将很有帮助,并且会引起对该问题的一些新关注,因为它会在标签供稿中显示为最近修改。
-
太棒了,谢谢你的建议