【问题标题】:PDO::FETCH_ASSOC Does not return the correct table columnsPDO::FETCH_ASSOC 不返回正确的表列
【发布时间】:2011-10-07 03:14:17
【问题描述】:

我是 PHP 新手,目前正在开发一个小型 Web 应用程序。下面是使用 PDO 进行 DB 查询的测试代码:

try 
{
    $dsn = "mysql:host=localhost;dbname=auction";
    $opt = array(
        PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
        PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES 'UTF8'"
    );
    $pdo = new PDO($dsn, 'root', 'password', $opt);
}

catch(PDOException $e)
{
    echo $e->getMessage();
}

$stmt = $pdo->query("SELECT id,username,password,name,level FROM users");
$stmt->setFetchMode(PDO::FETCH_ASSOC);
$test = $stmt->fetchALL();
print_r($test);

上述代码的输出如下:

Array ( [0] => Array ( [id] => 1 [username] => admin [users] => Administrator [auction] => 0 ) 
        [1] => Array ( [id] => 2 [username] => jodel [users] => Jodel Ross [auction] => 1 ) ) 

我很困惑,因为从我的角度来看,上面的代码应该给出了一个关联数组,其索引是返回结果集的列,即 id、username、password、name、level。但事实并非如此。

此外,如果我使用 PDO::FETCH_NUM,正确的字段数和相应的数据将正确返回,如下所示:

Array ( [0] => Array ( [0] => 1 
                       [1] => admin 
                       [2] => 21232f297a57a5a743894a0e4a801fc3 
                       [3] => Administrator 
                       [4] => 0 )
        [1] => Array ( [0] => 2 
                       [1] => jodel_ross 
                       [2] => 2cdaeb5df4cf941d9c5650591cba1fdc 
                       [3] => Jodel Ross, Jr. 
                       [4] => 1 ) ) 

请帮忙,我需要了解原因,我已经在网上搜索答案,但没有找到任何答案。 谢谢。

Development environment:
Windows 7 x64
PHP 5.3.6 
Mysql 5.5 
Apache 2.0.64 
Zend Framework 1.11

【问题讨论】:

    标签: pdo


    【解决方案1】:

    Zend Framework 1.x、PHP 5.3.x 和 setFetchMode() 仍然存在未解决的错误,这就是它无法按预期工作的原因。

    http://framework.zend.com/issues/browse/ZF-10866http://framework.zend.com/issues/browse/ZF-3470

    请投票关闭此错误或提交补丁。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-12-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-03-06
      • 2016-05-28
      相关资源
      最近更新 更多