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
autoloadOriginal
2021-03-12 10:53:452309browse

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);
        }
    }

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

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'=>''

    ),

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)

Document explanation:

constant    ( string $name   ) : mixed

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!

Statement:
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