我有一个基本的数据库处理程序类,我有一个使用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
)。
所以:
如何定义接受抓取类型并正确传递的可选参数?和
为什么数据类型的第一个接受参数为整数?
答案 0 :(得分:3)
警告解释了这一切,只需将其更改为:
public function resultSet($fetchType = PDO::FETCH_ASSOC) {
$this->execute();
return $this->stmt->fetchAll($fetchType);
}