Home > Backend Development > PHP Problem > Mode must be an integer appears when running PHP. How to solve it?

Mode must be an integer appears when running PHP. How to solve it?

autoload
Release: 2023-03-08 17:22:01
Original
2301 people have browsed it

I encountered a problem today when writing a custom mvc framework:

SQLSTATE[HY000]: General error: mode must be an integer

Paste the code below:

//这是报错位置的代码
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);
        }
    }
Copy after login

Code prompt: General error: mode must be an integer, I checked the document again

PDOStatement::fetchAll([ int $fetch_style [, mixed $fetch_argument   [, array $ctor_args = array()  ]]] ) : array
Copy after login

The mark here is that $fetch_style must be of type int , then I directly changed $this->fetch_mode directly to PDO::FETCH_ASSOC, and found that the operation was successful, and then flipped to the one stored in my config It turned out to be a string type:

'database'=>array(
         'type'=>'mysql',
         'host'=>'localhost',
         'port'=>'3306',
         'user'=>'root',
         'pass'=>'root',
         'charset'=>'utf8',
         'dbname'=>'my_database',
         'fetch_mode'=>'PDO::FETCH_ASSOC',//这里的问题
         'prefix'=>''

    ),
Copy after login

But for the sake of beauty, I decided not to change config, so......................:

       $stmt->setFetchMode(constant($this->fetch_mode));//这里必须使用int $model  constant($this->fetch_mode)
Copy after login

Document explanation:

constant    ( string $name   ) : mixed
Copy after login

Returns the value of the constant through name .

constant() is very useful when you don’t know the name of the constant but need to get the value of the constant. That is, the constant name is stored in a variable, or the constant name is returned by a function.

Return the value of the constant. Returns NULL if the constant is undefined.

Recommended: php video tutorial

The above is the detailed content of Mode must be an integer appears when running PHP. How to solve it?. For more information, please follow other related articles on the PHP Chinese website!

source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template