今日、カスタム 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_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
を返します。
推奨: php ビデオ チュートリアル
以上がPHP を実行すると「モードは整数でなければなりません」というメッセージが表示されますが、これを解決するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。