【问题标题】:PDOStatement::fetch returns falsePDOStatement::fetch 返回 false
【发布时间】:2013-02-06 03:44:06
【问题描述】:

我在使用 fetch 方法时遇到了一些问题。代码如下:

        $stmt = $db->prepare("INSERT INTO x (name) VALUES (:username)");
        $stmt->bindParam(':username', $username);
        $result = $stmt->execute();
        if ($result == '1') {
            $id = $stmt->fetch();
            return $id;
        }

执行查询并插入数据,$result 为 '1'。但是,当我尝试获取结果时,它返回 false。

有什么建议吗?

【问题讨论】:

  • 您无法从INSERT 查询中获取
  • 谢谢。对不起这个愚蠢的问题。所以我想最好的方法是在插入后执行 SELECT 查询?
  • 取决于你想要做什么。你想要插入ID?你可以在 MySQL 中 PDO::lastInsertId (显然它不可靠,但我从来没有遇到过问题)。那或选择LAST_INSERT_ID()
  • 谢谢。正是我想要的。
  • 标记为正确答案。 :)

标签: php pdo fetch


【解决方案1】:

你可以在 MySQL 中 $db->lastInsertId() (显然它不可靠,但我从来没有遇到过问题)。或者运行另一个查询:SELECT LAST_INSERT_ID() 并获取它。

【讨论】:

    【解决方案2】:

    如果您想获取插入的行数,请使用以下查询:

    $rows_inserted = $db->query("SELECT FOUND_ROWS()")->fetchColumn();
    

    【讨论】:

    • 不要使用 PDO 作为流畅的接口。您不能保证 query() 返回一个对象。它可能会在出错时返回 false
    猜你喜欢
    • 2018-10-29
    • 1970-01-01
    • 2012-04-21
    • 2014-05-07
    • 1970-01-01
    • 2023-03-28
    • 1970-01-01
    • 2014-05-20
    • 2012-06-18
    相关资源
    最近更新 更多