>  기사  >  백엔드 개발  >  모드는 PHP를 실행할 때 정수여야 합니다. 어떻게 해결합니까?

모드는 PHP를 실행할 때 정수여야 합니다. 어떻게 해결합니까?

autoload
autoload원래의
2021-03-12 10:53:452259검색

오늘 사용자 정의 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_mode code>가 <code>PDO::FETCH_ASSOC로 직접 변경되었으며 작업이 성공한 것으로 나타났습니다. 나중에 내 config에 문자열 유형이 저장되어 있음을 발견했습니다: $fetch_style必须为int型,后来我直接将$this->fetch_mode直接改成PDO::FETCH_ASSOC,发现运行成功,后来翻到我的config里面存储的竟然是个字符串类型:

&#39;database&#39;=>array(
         &#39;type&#39;=>&#39;mysql&#39;,
         &#39;host&#39;=>&#39;localhost&#39;,
         &#39;port&#39;=>&#39;3306&#39;,
         &#39;user&#39;=>&#39;root&#39;,
         &#39;pass&#39;=>&#39;root&#39;,
         &#39;charset&#39;=>&#39;utf8&#39;,
         &#39;dbname&#39;=>&#39;my_database&#39;,
         &#39;fetch_mode&#39;=>&#39;PDO::FETCH_ASSOC&#39;,//这里的问题
         &#39;prefix&#39;=>&#39;&#39;

    ),

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

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

          文档的解释:

constant    ( string $name   ) : mixed

通过 name 返回常量的值。

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

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

하지만 외관상 config를 변경하지 않기로 결정했기 때문에 ............:

rrreee                                                                                                                                >name 상수 값을 반환합니다.

상수 이름은 모르지만 상수 값을 가져와야 할 때 constant() 가 매우 유용합니다. 즉, 상수 이름이 변수에 저장되거나 상수 이름이 함수에 의해 반환됩니다. 🎜🎜상수 값을 반환합니다. 상수가 정의되지 않은 경우 NULL을 반환합니다. 🎜🎜추천: 🎜php 비디오 튜토리얼🎜🎜

위 내용은 모드는 PHP를 실행할 때 정수여야 합니다. 어떻게 해결합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.