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!