doutangliang7769 2010-09-30 13:07
浏览 26
已采纳

什么应该在PHP中使用PDO语句返回print_r?

$dbh = new PDO ("sqlite:/Library/WebServer/Documents/nwind2009.db3");
$sql = "SELECT * FROM Customers";     
print_r($dbh->query($sql));

This returns:

PDOStatement Object ( [queryString] => SELECT * FROM Customers )

but if I do:

 foreach ($dbh->query($sql) as $row) {
    echo $row['CompanyName'];
 }

I get the data.

Why doesn't print_r show the database results? What special thing is happening in the foreach? I thought print_r showed me the array and that that was what I was doing in my foreach.

Thanks.

  • 写回答

3条回答 默认 最新

  • dongzhan8001 2010-09-30 13:21
    关注

    If you iterate over the query, it will automatically fetch the data. This is a good thing, because the adapter will lazy load the data the moment it is actually needed.

    If you want to force the PDO adapter to fetch the data in advance, you can run the fetchAll method like so:

    $dbh = new PDO ("sqlite:/Library/WebServer/Documents/nwind2009.db3");
    $sql = "SELECT * FROM Customers";       
    print_r($dbh->query($sql)->fetchAll());
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)
编辑
预览

报告相同问题?

手机看
程序员都在用的中文IT技术交流社区

程序员都在用的中文IT技术交流社区

专业的中文 IT 技术社区,与千万技术人共成长

专业的中文 IT 技术社区,与千万技术人共成长

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

客服 返回
顶部