SQLSTATE[HY000]: General error: mode must be an integer
4610
今天在写自定义mvc框架的时候遇到一个问题:
- SQLSTATE[HY000]: General error: mode must be an integer
下面贴上代码:
- //这是报错位置的代码
- public function dao_query($sql,$all = true){
- try{
- $stmt = $this->pdo->query($sql);
- //设置fetch_mode
- $stmt->setFetchMode($this->fetch_mode);//这里报错
- //解析数据
- if(!$all){
- return $stmt->fetch();
- }else{
- return $stmt->fetchAll();
- }
- }catch(PDOException $e){
- $this->dao_exception($e);
- }
- }
代码提示:General error: mode must be an integer,我又去翻了一下文档
- PDOStatement::fetchAll([ int $fetch_style [, mixed $fetch_argument [, array $ctor_args = array() ]]] ) : array
这里标注$fetch_style必须为int型,后来我直接将 $this->fetch_mode 直接改成 PDO::FETCH_ASSOC,发现运行成功,后来翻到我的config里面存储的竟然是个字符串类型:
- 'database'=>array(
- 'type'=>'mysql',
- 'host'=>'localhost',
- 'port'=>'3306',
- 'user'=>'root',
- 'pass'=>'root',
- 'charset'=>'utf8',
- 'dbname'=>'my_database',
- 'fetch_mode'=>'PDO::FETCH_ASSOC',//这里的问题
- 'prefix'=>''
- ),
不过为了美观,我还是决定不改config了,于是................:
- $stmt->setFetchMode(constant($this->fetch_mode));//这里必须使用int $model constant($this->fetch_mode)
文档的解释:
- constant ( string $name ) : mixed
通过 name 返回常量的值。
当你不知道常量名,却需要获取常量的值时,constant() 就很有用了。也就是常量名储存在一个变量里,或者由函数返回常量名。
返回常量的值。如果常量未定义则返回 NULL。
本文网址:https://www.zztuku.com/detail-8729.html
站长图库 - SQLSTATE[HY000]: General error: mode must be an integer
申明:如有侵犯,请 联系我们 删除。
您还没有登录,请 登录 后发表评论!
提示:请勿发布广告垃圾评论,否则封号处理!!