【问题标题】:PDO::FETCH_CLASSTYPE - unexpected resultPDO::FETCH_CLASSTYPE - 意外结果
【发布时间】: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 得到了同样的东西......有趣

标签: php pdo pdostatement


【解决方案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') 

【讨论】:

    猜你喜欢
    • 2020-09-17
    • 2015-10-01
    • 1970-01-01
    • 2012-10-09
    • 2018-09-04
    • 2017-06-02
    • 2021-11-11
    • 2019-03-23
    • 1970-01-01
    相关资源
    最近更新 更多