我是PHP的新手,我目前正在开发一个小型Web应用程序。下面是使用PDO的数据库查询的测试代码:
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
答案 0 :(得分:1)
Zend Framework 1.x,PHP 5.3.x和setFetchMode()仍存在一个开放错误,这就是它无法按预期工作的原因。
请参阅http://framework.zend.com/issues/browse/ZF-10866和http://framework.zend.com/issues/browse/ZF-3470
请投票支持关闭此错误或提交补丁。