동일한 이메일이 데이터베이스에 이미 존재하는지 확인하기 위해 행 개수를 가져오고 싶습니다. 나는 여러 가지 메커니즘을 시도했지만 성공하지 못했습니다. 데이터베이스에서 직접 쿼리를 실행하면 행 수가 제공되지만 PDO를 통해 실행하면 0이 제공됩니다.
수동으로 계산하기 위해 fetchAll 메서드를 사용했는데 rowCount 메서드를 사용해도 작동하지 않습니다
으아아아문제는 이 $email_f에 html이 포함되어 있다는 것입니다
으아아아이것은 $sql에서 인쇄한 쿼리이며 phpmyadmin의 데이터베이스에서 직접 실행하면 제대로 작동합니다. 나는 숫자 3을 받았지만 실행하면 0을 얻습니다.
우선, 쿼리에서 어떤 행도 찾지 못하면 데이터가 정확하다고 확신할 수 있더라도 일치하는 항목이 없다는 의미라는 사실을 받아들여야 합니다. 쿼리가 행을 반환하지 않으면 기준과 일치하는 행이 없다는 의미입니다. 그래서 당신은 알아내야 합니다 – 왜? 하지만 먼저 쿼리가 올바른지 확인해야 합니다.
SQL 오류로 인한 문제
먼저 쿼리가 실제로 오류 없이 실행되는지 확인해야 합니다. "결과 없음"은 쿼리에 오류가 있음을 의미할 수 있기 때문입니다. 자세한 내용은 pdo 및 mysqli 답변을 참조하세요.
"해당 테이블/데이터베이스가 없습니다"라는 오류 메시지가 표시되면 아래의 "자격 증명 연결" 사례를 참조하세요.
조건으로 인한 문제
조건을 확인하세요.
WHERE col=1 AND col=2
와 같이 상호 배타적인 조건이 있습니다. 어떤 행도 반환하지 않습니다. 일부 행이 반환되기 시작할 때까지 조건을 단순화한 다음 조건을 구체화하여 원하는 결과를 얻으세요.하지만 좋습니다. 오류도 없고 조건도 정확하며 테이블의 데이터가 쿼리와 일치한다고 확신할 수 있습니다. 하지만 몇 가지 함정이 있습니다:
데이터로 인한 문제
먼저 변수가 관련되어 있으면 해당 변수가 존재하는지 실제로 어떤 값이 포함되어 있는지 확인하세요.
그런 다음 값 자체를 확인하세요. 입력 데이터(또는 데이터베이스)에 일부 변환되거나 인쇄할 수 없는 문자가 있을 수 있습니다. 줄 바꿈이나 특수하게 인코딩된 기호 또는 라틴어가 아닌 모든 문자를 코드로 변환하여 표시하는
<
和>
。因此,包含<abc@abcs.com>
的查询永远不会匹配文本<abc@abcs.com>
。为了快速检查,您可以使用rawurlencode()
함수와 같이 HTML 엔터티로 변환된 특정 문자 등이 있습니다.문제는 단지 추측일 뿐이며 실제 문제가 무엇인지 아무도 말할 수 없다는 것입니다. 왜냐하면 귀하의 데이터베이스, 귀하 데이터를 입력하면 귀하만이 문제를 찾을 수 있기 때문입니다.
저는 PDO 문제를 디버깅하는 방법을 설명하는 글을 썼습니다.
특정 문제를 디버깅하려면
urlencode()
함수는 데이터베이스 및 입력에 인쇄할 수 없고 변환할 수 없는 모든 문자를 표시하는 데 도움이 됩니다.연결 자격 증명으로 인한 문제
또 다른 일반적인 문제는 여러 데이터베이스가 있고 요청한 데이터가 포함되지 않은 잘못된 데이터베이스에 연결하는 경우입니다. 이 질문은 이 질문과 유사하므로 동일한 루틴을 따르고 테이블 목록 대신 데이터 행만 확인하세요.
문자셋/인코딩으로 인한 문제
이것은 드문 상황이지만 확실히 하려면 이 훌륭한 답변
에 있는 체크리스트를 따르세요.