PDOStatement::fetch()

PDOStatement::fetch    ([ int $fetch_style   [, int $cursor_orientation = PDO::FETCH_ORI_NEXT   [, int $cursor_offset = 0  ]]] ) : mixed

$fetch_style此值必须是 PDO::FETCH_* 系列常量中的一个:

  • PDO::FETCH_ASSOC:返回一个索引为结果集列名的数组

  • PDO::FETCH_BOTH(默认):返回一个索引为结果集列名和以0开始的列号的数组

  • PDO::FETCH_BOUND:返回 TRUE ,并分配结果集中的列值给 PDOStatement::bindColumn() 方法绑定的 PHP 变量。

  • PDO::FETCH_CLASS:返回一个请求类的新实例,映射结果集中的列名到类中对应的属性名。如果 fetch_style 包含 PDO::FETCH_CLASSTYPE(例如:PDO::FETCH_CLASS | PDO::FETCH_CLASSTYPE),则类名由第一列的值决定。

  • PDO::FETCH_INTO:更新一个被请求类已存在的实例,映射结果集中的列到类中命名的属性

  • PDO::FETCH_LAZY:结合使用 PDO::FETCH_BOTH 和 PDO::FETCH_OBJ,创建供用来访问的对象变量名

  • PDO::FETCH_NUM:返回一个索引为以0开始的结果集列号的数组

  • PDO::FETCH_OBJ:返回一个属性名对应结果集列名的匿名对象


在默认使用fetch()方法的时候,我们会得到数据库中双重数据:

Snipaste_2021-03-12_11-19-39.png

php入门到就业线上直播课:进入学习
Apipost = Postman + Swagger + Mock + Jmeter 超好用的API调试工具:点击使用


但是在数据库中,真的只有简单的一条数据:

Snipaste_2021-03-12_11-21-23.png


如果你只想要获取单纯的一条索引为结果集列名,则只需要简单设置即可:

$statement->setFetchMode(PDO::FETCH_ASSOC);

Snipaste_2021-03-12_11-25-33.png


查询数据的必备良方-php中的setFetchMode ()