问答详情
源自:2-6 [PDO] prepare()和execute()方法执行查询语句

为什么是$stmt->fetch(),而不是从$res->fetch()??

$stmt明明是预处理对象,$res是结果集,不是从结果集中fetch结果的吗?

提问者:lovePhper 2014-10-31 08:31

个回答

  • King
    2014-10-31 10:17:48

    预处理对象PDOStatement对象中有这个方法啊

    你看看手册,这个不是为什么,咱们是游戏的执行者,不是规定者

    ^-^...

  • hi_tp
    2014-12-25 14:50:17

    补充一点,

    PDOStatement 类

    (PHP 5 >= 5.1.0, PECL pdo >= 1.0.0)

    简介

    代表一条预处理语句,并在该语句被执行后代表一个相关的结果集。

    是不是一些就清晰很多了呢!? 看到这句我也清晰了很多

  • hi_tp
    2014-12-25 14:45:17

    案例中:$stmt 是PDOStatement对象   fetch()是类中方法。 另外$res = $stmt -> execute() 你var_dump()下$res  你会发现是一个boolean值,也就是说$res是预处理语句执行是否成功的返回值,“对象调用方法”。  知道这里了,再去想为什么是$stmt->fetch()而不是$res->fetch()是不是就清晰很多了呢。PDO的一些方式和思路和mysql的方式不大一样

  • lovePhper
    2014-10-31 08:39:14

    通过先$stmt->query()之后,再遍历: $row = $stmt->fetch ( PDO::FETCH_ASSOC )    与

    通过$stmt->prepare() then $stmt->exec()  然后再  $row = $stmt->fetch ( PDO::FETCH_ASSOC )  不是一样的吗?


    我理解不了 $stmt 和$res 有何区别。求老师指导!!!!