오류 메시지는 질문에 표시되지 않은 코드 줄을 실행 한 것입니다.
하나의 명백한 가능성은이 코드에서 생성 된 문자열 값이 MySQL에 전달되지 않는다는 것입니다. 또 다른 가능성은 $subject_id
에 SQL 텍스트로 해석되는 문자열 값이 포함되어 있고 $query
에는 사용자가 생각하는 내용이 포함되어 있지 않습니다. 다른 많은 가능성이 있습니다.
이와 같은 디버깅 문제의 경우 실제로 오류가 발생하는 코드 줄을 식별해야합니다. (귀하의 경우에는 mysql_, mysqli 또는 PDO에 대한 호출이 함수 또는 메소드를 실행하거나 준비합니다.)
전달할 ACTUAL SQL 텍스트의 echo
또는 var_dump
을 추가 할 수 있습니다 오류를 던지고있는 행 바로 앞의 행에있는 MySQL.
예를 들어, 당신은 수정이 코드 다음 코드 줄 경우이 오류 메시지가 표시 및 구문 분석 전이나 호출을 실행 할 쿼리에 두 번째 LIMIT 절을 추가 할 수 $query
$query .= " LIMIT 1";
, 이는 유효하지 않으며, 귀하가받는 것과 동일한 오류를 던질 것입니다.
반복 : 질문에 게시 된 코드 줄에 오류가 발생하지 않습니다. 게시 한 코드 행은 단순히 문자열 값을 변수에 할당하는 것입니다. (이것은 MySQL로 전달되는 문자열 값이 될 수 있지만, 우리는 당신의 코드에서 그 어느 곳을 볼 수 없습니다.) 당신은 INT 형식이 될 수 있습니다 'subject_id'
를 사용하는
위의 정확한 쿼리를 사용하여 테스트 테이블을 통해 직접 테스트했습니다. 그것은 나에게 어떤 오류도주지 않는다. 아마도이 오류를 제공하는 쿼리가 아닙니다. – machineaddict
이와 같은 디버깅 문제에 대해, 쿼리를 준비하거나 실행하기 직전에 간단한'echo $ query; '가 매우 유용 할 수 있습니다. 우리가 볼 필요가있는 것은 MySQL에 전달되는 실제 SQL 텍스트입니다. 이 오류는 여기에 표시되지 않은 코드 행에 의해 표시됩니다. – spencer7593
@ spencer7593 : 1. 따옴표없이 2. 'echo'가 아닌'var_dump' – zerkms