일부 PHP 기반 애플리케이션에서 문제가 발생할 수 있습니다. MySQL 쿼리의 결과는 올바른 정수 또는 숫자 데이터 유형이 아닌 문자열로 반환됩니다. 이는 문자열 캐스팅을 방지하기 위해 PDO 속성 PDO::ATTR_STRINGIFY_FETCHES를 false로 설정했음에도 불구하고 발생합니다.
MySQL 드라이버가 숫자 유형이 유효한지 여부를 결정하는 데 중요한 역할을 한다는 점에 유의하는 것이 중요합니다. 정수 또는 숫자로 반환됩니다. Linux의 MySQL 네이티브 드라이버와 같은 일부 드라이버는 이 기능을 완전히 지원하지 않습니다.
그러나 타사 저장소를 통해 Linux 배포판에 사용할 수 있는 mysqlnd 드라이버는 이 기능을 지원합니다. 이 기능을 지원합니다. PHP 환경에서 mysqlnd 드라이버가 사용되고 있는지 확인하는 것이 중요합니다.
Ubuntu에서 기본 MySQL 드라이버를 mysqlnd로 전환하려면, 다음 단계를 따르십시오.
mysqlnd를 설치한 후 실행 중인지 확인하세요. php -i를 실행하여 사용됩니다. pdo_mysql 섹션에서 다음 항목을 찾으십시오.
PDO Driver for MySQL => enabled Client API version => mysqlnd 5.0.10 - 20111026 - $Id: e707c415db32080b3752b232487a435ee0372157 $
다음 PDO 속성이 올바르게 설정되었는지 확인하십시오.
이러한 설정이 구성되면 MySQL은 숫자 유형을 다음과 같이 반환합니다. 다음은 다음과 같습니다.
예를 들어 다음 PHP 코드는 예상되는 데이터 유형을 출력합니다.
$pdo->setAttribute(PDO::ATTR_STRINGIFY_FETCHES, false); $pdo->setAttribute(PDO::ATTR_EMULATE_PREPARES, false); $stmt = $pdo->prepare("SELECT * FROM table"); $stmt->execute(); $row = $stmt->fetch(PDO::FETCH_OBJ); echo "<pre class="brush:php;toolbar:false">"; print_r($row); echo "";
출력:
object(stdClass)[915] public 'integer_col' => int 1 public 'double_col' => float 1.55 public 'float_col' => float 1.5 public 'decimal_col' => string '1.20' (length=4) public 'bigint_col' => string '18446744073709551615' (length=20)
위 내용은 MySQL 숫자 열이 PHP에서 문자열로 반환되는 이유는 무엇이며, 정수 또는 부동 소수점으로 반환되는지 어떻게 확인할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!