Heim > Backend-Entwicklung > PHP-Problem > Der Modus muss eine Ganzzahl sein, wenn PHP ausgeführt wird. Wie kann ich das Problem lösen?

Der Modus muss eine Ganzzahl sein, wenn PHP ausgeführt wird. Wie kann ich das Problem lösen?

autoload
Freigeben: 2023-03-08 17:22:01
Original
2311 Leute haben es durchsucht

Ich bin heute beim Schreiben eines benutzerdefinierten MVC-Frameworks auf ein Problem gestoßen:

SQLSTATE[HY000]: Allgemeiner Fehler: Modus muss eine Ganzzahl sein

Fügen Sie den folgenden Code ein:

//这是报错位置的代码
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);
        }
    }
Nach dem Login kopieren

Code-Eingabeaufforderung: Allgemeiner Fehler: Modus muss eine Ganzzahl sein , ich habe das Dokument noch einmal durchgesehen

PDOStatement::fetchAll([ int $fetch_style [, mixed $fetch_argument   [, array $ctor_args = array()  ]]] ) : array
Nach dem Login kopieren

Hier ist markiert, dass $fetch_style vom Typ int sein muss, und dann habe ich $this-> direkt geändert. fetch_mode wurde direkt in PDO::FETCH_ASSOC geändert und festgestellt, dass der Vorgang erfolgreich war. Später stellte ich fest, dass meine config einen Zeichenfolgentyp gespeichert hatte: $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'=>''

    ),
Nach dem Login kopieren

不过为了美观,我还是决定不改config了,于是................:

       $stmt->setFetchMode(constant($this->fetch_mode));//这里必须使用int $model  constant($this->fetch_mode)
Nach dem Login kopieren

文档的解释:

constant    ( string $name   ) : mixed
Nach dem Login kopieren

通过 name 返回常量的值。

当你不知道常量名,却需要获取常量的值时,constant() 就很有用了。也就是常量名储存在一个变量里,或者由函数返回常量名。 

返回常量的值。如果常量未定义则返回 NULLrrreee

Aber Aus optischen Gründen habe ich beschlossen, config nicht zu ändern, also ............:

rrreee                                                                                                                            >Name Gibt den Wert der Konstante zurück.

Wenn Sie den Namen der Konstante nicht kennen, aber den Wert der Konstante benötigen, ist constant() sehr nützlich. Das heißt, der Konstantenname wird in einer Variablen gespeichert oder der Konstantenname wird von einer Funktion zurückgegeben. 🎜🎜Gibt den Wert der Konstante zurück. Gibt NULL zurück, wenn die Konstante undefiniert ist. 🎜🎜Empfohlen: 🎜php-Video-Tutorial🎜🎜

Das obige ist der detaillierte Inhalt vonDer Modus muss eine Ganzzahl sein, wenn PHP ausgeführt wird. Wie kann ich das Problem lösen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage