PHP を実行すると「モードは整数でなければなりません」というメッセージが表示されますが、これを解決するにはどうすればよいですか?

autoload
リリース: 2023-03-08 17:22:01
オリジナル
2264 人が閲覧しました

今日、カスタム mvc フレームワークを作成しているときに問題が発生しました:

SQLSTATE[HY000]: 一般エラー: モードは整数である必要があります

以下のコードを貼り付けてください:

//这是报错位置的代码
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);
        }
    }
ログイン後にコピー

コード プロンプト: 一般エラー: モードは整数である必要があります。ドキュメントを再度確認しました

PDOStatement::fetchAll([ int $fetch_style [, mixed $fetch_argument   [, array $ctor_args = array()  ]]] ) : array
ログイン後にコピー

ここでの注意点は、$fetch_styleint 型である必要があることです。次に、$this->fetch_modePDO::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 を返します。

推奨: php ビデオ チュートリアル

以上がPHP を実行すると「モードは整数でなければなりません」というメッセージが表示されますが、これを解決するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート