PDOStatement :: fetchAll()期望参数1为long,给出字符串?

时间:2013-12-30 05:32:30

标签: php mysql pdo

我有一个基本的数据库处理程序类,我有一个使用PDO::FETCH_ASSOC参数返回结果集的公共方法:

public function resultSet() {
    $this->execute();
    return $this->stmt->fetchAll(PDO::FETCH_ASSOC);
}

但是,我已经确定我需要使用PDO::FETCH_COLUMN来处理一些用例,因此为了保持向后兼容性,我在我的方法中添加了一个可选参数:

public function resultSet($fetchType = "PDO::FETCH_ASSOC") {
    $this->execute();
    return $this->stmt->fetchAll($fetchType);
}

这导致错误而不是我期望的回报:

Warning: PDOStatement::fetchAll() expects parameter 1 to be long, string given

我理解我传递了一个字符串,因为我将$fetchType定义为字符串,但我不知道long是什么,或者如何定义包含的可选参数我首选的获取模式。

我决定查看PDO::fetchAll()的文档,我只会感到更加困惑......它预期的第一个数据类型是整数? (int $fetch_type)。

所以:

  1. 如何定义接受抓取类型并正确传递的可选参数?

  2. 为什么数据类型的第一个接受参数为整数?

1 个答案:

答案 0 :(得分:3)

警告解释了这一切,只需将其更改为:

public function resultSet($fetchType = PDO::FETCH_ASSOC) {
    $this->execute();
    return $this->stmt->fetchAll($fetchType);
}