print_r()显示sql语句而不是打印pdo结果集?

use*_*913 2 php pdo

我试图调试为什么以下查询不返回结果集.当我尝试使用print_r调试它以查看此sql返回的内容时,我得到sql语句本身而不是结果集.有人可以帮我解释为什么这不会返回结果集吗?

编辑:我正在使用PHP数据对象的查询功能

  $query = "select * from categories order by categoryID";

  $categories = $db->query($query);

  print_r($categories);
Run Code Online (Sandbox Code Playgroud)

kap*_*apa 5

因为该方法返回一个PDOStatement对象,如手册中所述,而不是关联数组.您必须首先从此对象获取结果集.

您可以使用fetchAll()在关联数组中获取所有结果(或根据您的喜好获得任何其他PDO获取方法):

print_r($categories->fetchAll());
Run Code Online (Sandbox Code Playgroud)

当您遇到这样的问题时,建议您阅读本手册.

  • @ user481913 PDOStatement有一个所谓的Iterator,所以当你在foreach中使用它时,它总会返回简单的`fetch()`方法的下一个结果.您也可以在手册中看到foreach示例. (2认同)