2016-12-07 2 views
0

나는 MySQL 테이블에서 선택하는 PHP 스크립트를 가지고 있습니다. Table Content는 UTF8로 설정되어 있으므로 PHP 스크립트와 인터페이스 할 수 있습니다.MYSQL SELECT 결과를 반환하지 않음

입력 문자열은 real_escape입니다. 테이블에 다음 데이터를 감안할 때 : 나는 다음과 같은 문제에 직면하고있다

  • ID 사용자 이름
  • 1 테스트
  • 2 Test1을
  • 3 테스트-A

다음 SQL은 1과 2에 대한 ID를 반환합니다. 하지만 3 번째 요청시 반환됩니다. 아무것도 아냐.

SELECT `ID` FROM `User` WHERE `Username` = '$User' 

나는 ID 사용자 이름 = 테스트-A를 요청할 때 왜 반환하지 않습니다? 사용자 이름에 마이너스가 포함 되었습니까?

+2

나는 mysql 주입에 대해주의를 기울였다. 준비된 진술을 살펴보십시오. –

+0

그게 내 문제를 세 번째 테스트 케이스에서도 해결합니까? – CMA

+0

아니요, 질의는 문자열에 -가 있기 때문에 영향을받지 않습니다. –

답변

0

다른 문자열이어야합니다. 두 경우 모두 대시/하이픈 표시를 다시 확인하십시오 (here과 같이 다른 유니 코드 문자 일 수 있음). "서식있는"텍스트 편집기에서 데이터를 복사하여 붙여 넣을 때 자주 발생합니다. 공백을 확인하십시오.

0

"real_escaped"의 의미에 따라 사용자 이름이 본질적으로 존재하지 않는 ('Test \ -A')와 유사한 것으로 탈출하는 경우가있을 수 있습니다.

MySQL에 보내는 값을 확인하기 위해 $ User의 값을 출력하십시오.

더구나 오래된 구식 방법을 사용하고 있으므로 PDO :: prepare (http://us1.php.net/manual/en/pdo.prepare.php)를 사용하여 데이터베이스를 안전하게 쿼리하는 더 좋은 방법이 있습니다. 거기에있는 예제를 사용하십시오.

관련 문제