오늘 사용자 정의 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 code>가 <code>PDO::FETCH_ASSOC
로 직접 변경되었으며 작업이 성공한 것으로 나타났습니다. 나중에 내 config
에 문자열 유형이 저장되어 있음을 발견했습니다: $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
rrreee
config
를 변경하지 않기로 결정했기 때문에 ............: rrreee >name 상수 값을 반환합니다.
상수 이름은 모르지만 상수 값을 가져와야 할 때constant()
가 매우 유용합니다. 즉, 상수 이름이 변수에 저장되거나 상수 이름이 함수에 의해 반환됩니다. 🎜🎜상수 값을 반환합니다. 상수가 정의되지 않은 경우 NULL
을 반환합니다. 🎜🎜추천: 🎜php 비디오 튜토리얼🎜🎜위 내용은 모드는 PHP를 실행할 때 정수여야 합니다. 어떻게 해결합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!