PDO::FETCH_CLASSTYPE - 意外结果

Posted

技术标签:

【中文标题】PDO::FETCH_CLASSTYPE - 意外结果【英文标题】:PDO::FETCH_CLASSTYPE - unexpected result 【发布时间】:2012-03-21 23:44:58 【问题描述】:

我在这里不知所措。不知道为什么我会得到“stdClass”。我不应该从第一列获取名称吗?

$sql = "选择 cn、iso2、iso3、fid、从 ct 排序"; $stmt = $dbh->查询($sql); $result = $stmt->fetch( PDO::FETCH_CLASS | PDO::FETCH_CLASSTYPE ); var_dump($result); //预期 - 首先:cn.col 保存国家名称 对象(巴西)[3] 公共'iso2' => 字符串'BR'(长度=2) 公共'iso3' => 字符串'BRA'(长度=3) 公共'fid' => 字符串'1'(长度=1) 公共“排序”=> 字符串“0”(长度=1) //已收到 对象(stdClass)[3] 公共'iso2' => 字符串'BR'(长度=2) 公共'iso3' => 字符串'BRA'(长度=3) 公共'fid' => 字符串'1'(长度=1) public 'sort' => string '0' (length=1)var_dump

【问题讨论】:

代码看起来正确,你能做一个get_class($result)吗? get_class($result) 让我明白:stdClass --- col.1(用于类名)是 varchar,所以应该没问题(格式方面) - 没有中断或空格等。跨度> 想了很多...奇怪,代码看起来应该可以工作。 是的:)我可能会尝试一些其他 php 版本,看看是否有区别,但不是今天。 v.5.2.10 得到了同样的东西......有趣 【参考方案1】:

问题很可能是类未定义(或在范围内)。我使用本地数据做了一些测试。

$conn = new PDO("mysql:host=localhost;dbname=test", 'user', 'pass');
$conn->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_WARNING ); 

$stmt = $conn->prepare("SELECT name,email FROM `test_table`");
$stmt->execute();
$result = $stmt->fetch( PDO::FETCH_CLASS | PDO::FETCH_CLASSTYPE );

print_r($result) // returns stdClass Object ( [email] => 'test@test.com' ) 

通过在 PDO 代码上方添加此代码

Class levi


我能够让它返回:

levi Object ( [email] => 'test@test.com') 

【讨论】:

以上是关于PDO::FETCH_CLASSTYPE - 意外结果的主要内容,如果未能解决你的问题,请参考以下文章

JSLint:意外的“为”。意外的'var'

解析错误:意外的令牌,预期的“,”和语法错误:意外的令牌'['[重复]

如和找到或再次打开意外关闭的网页?

JAVA中提示“意外的类型”啥意思,怎么解决?

HQL 意外的 AST 节点:意外的 AST 节点:

巧合?严重RCE漏洞竟被意外修复