> 데이터 베이스 > MySQL 튜토리얼 > 내 PDO 데이터베이스 행 일치 쿼리가 일치 항목이 있어도 0을 반환하는 이유는 무엇입니까?

내 PDO 데이터베이스 행 일치 쿼리가 일치 항목이 있어도 0을 반환하는 이유는 무엇입니까?

Patricia Arquette
풀어 주다: 2024-12-18 17:20:12
원래의
210명이 탐색했습니다.

Why Does My PDO Database Row Matching Query Return Zero Even When Matches Exist?

PDO를 사용하여 데이터베이스의 행 일치: 문제 해결

PDO를 사용하여 데이터베이스에서 중복 행을 확인하려고 하면 시나리오가 발생할 수 있습니다. 결과가 기대와 다른 경우. 고려해야 할 잠재적인 문제와 해결책은 다음과 같습니다.

SQL 오류로 인한 문제

쿼리가 오류 없이 실행되고 있는지 확인하세요. PDO는 일치하는 항목이 없더라도 결과 개수로 '0'을 반환할 수 있으며 이는 쿼리 문제를 나타냅니다.

조건으로 인한 문제

에 대한 쿼리 조건을 검토하세요. 독점. "WHERE col=1 AND col=2"와 같은 조건은 항상 '0'을 반환합니다. 문제를 격리하려면 조건을 단순화하세요.

데이터로 인한 문제

  • 쿼리와 관련된 변수가 존재하고 값을 포함하는지 확인하세요.
  • 입력 데이터에 인쇄할 수 없거나 변환할 수 없는 문자가 있는지 확인하세요. rawurlencode()를 사용하여 이러한 문자를 인코딩하여 표시되도록 합니다.

디버깅 팁

  • PDO 및 PHP 모두에 대해 전체 오류 보고를 활성화합니다.
  • 데이터베이스의 데이터와 입력 값의 차이점을 면밀히 조사하세요. 인쇄할 수 없는 문자를 표시하려면 urlencode()를 사용하세요.
  • 올바른 데이터베이스에 연결되어 있는지 확인하세요.
  • 데이터베이스와 PHP의 문자 집합과 인코딩 구성을 확인하세요.

문제 및 해결 사례

귀하의 쿼리에는 "SELECT count(*) FROM inbox WHERE ... AND from_email = "abc Offers <[email protected]>""와 같은 HTML 엔터티가 포함된 문자열입니다. phpMyAdmin에서 실행하면 이 쿼리는 작동하지만 PDO를 통해 '0'을 반환합니다. HTML 엔터티(엔티티로 변환된 "<" 및 ">")로 인해 불일치가 발생합니다. 이러한 항목을 제거하도록 쿼리를 수정하면 문제가 해결됩니다.

$sql = 'SELECT count(*) FROM inbox WHERE uid = ? AND from_email = "abc Offers [email&#160;protected]"';
$result = $link->prepare($sql); 
$result->execute([$email_number,$email_f]); 
$number_of_rows = $result->fetchColumn();
로그인 후 복사

위 내용은 내 PDO 데이터베이스 행 일치 쿼리가 일치 항목이 있어도 0을 반환하는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿