2017-09-13 11 views
0

내 MySQL 데이터베이스에서 정보를 처리하는 문제가,이 코드가MYSQL은

Error: SELECT * FROM obojok WHERE id_uzivatela = '******' AND id_zvierata IS NULL
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'is null AND id_uzivatela='20170'' at line 1

+3

오류가 귀하의 검색어와 일치하지 않습니다. –

+0

당신은 어떻게 의미합니까? – majkx00

+0

그는'null이고 id_uzivatela = '20170'(오류 메시지의)이 실제 쿼리에서 찾을 수 없다는 것을 의미합니다. 여기에 표시되는 코드가 올바르게 복사 된 경우 – Cashbee

답변

-2

SELECT * 'ID_zvierata가 NULL입니다.'id_zvierata is NULL

+0

이것은 해결책이 아닙니다. @Adrian Wolff –

+0

왜 쿼리 동작을 변경 했습니까 ?? 그것이 그랬던 것처럼 그것은 멋졌다. – Salketer

0

오류가 쿼리에 없습니다. 적어도 질문에 게시 된 쿼리가 아닙니다.

오류는 PHP 코드에서 발생합니다.

SELECT 쿼리는 TRUE을 반환하지 않습니다. 성공하면 객체를 반환합니다. 어떤 MySQL 라이브러리를 사용하는지에 따라 mysqli_result 또는 PDOStatement입니다.

쿼리가 성공하고 $res가 개체입니다. TRUE이 아니며 $res === TRUE 테스트가 실패하고 코드가 else 분기를 잘못 실행합니다. 그런 다음 성공적으로 실행 된 올바른 쿼리와 가장 최근의 실패한 쿼리의 오류 메시지를보고합니다. 이것은 오류 메시지의 서버에 나열된 쿼리 조각이 실행 한 쿼리와 일치하지 않는 이유를 설명합니다.

쿼리 결과를 확인하는 올바른 방법은 $res != FALSE입니다. == 또는 ===을 사용하는 경우, $res은 개체 (비교 대상과 관계없이 FALSE과 동일하지 않음)이거나 FALSE입니다. 뿐만 아니라 $res을 사용할 수 있습니다. 그것은 같은 일이 :

$sql = "SELECT * FROM obojok WHERE id_uzivatela = '".$_SESSION['uzivatel']['id']."' AND id_zvierata IS NULL"; 
$res = $conn->query($sql); 
if ($res) { 
    echo "DATA Obtained"; 
} else { 
    echo "Error: " . $sql . "<br>" . $conn->error; 
} 

가 사용하는 MySQL의 라이브러리에 따라 더 약 mysqli::query() 및/또는 PDO::query()를 참조하십시오.

1

귀하의 질의에는 문제가 없습니다 ... 귀하가 보는 오류는 다른 질의에 의한 것입니다. 문서에서

, 당신은 진정한 가치에 테스트하지 않는, 쿼리가 작동하는지 확인하려면 conn-> 쿼리가 TRUE

Returns FALSE on failure. For successful SELECT, SHOW, DESCRIBE or EXPLAIN queries mysqli_query() will return a mysqli_result object.

엄격하게 동일하지 않아야 $의 반환, 당신은 더 나은 거짓하지에 테스트 ...

$sql = "SELECT * FROM obojok WHERE id_uzivatela = '".$_SESSION['uzivatel']['id']."' AND id_zvierata IS NULL"; 
    $res = $conn->query($sql); 
    if ($res != FALSE) { 
    echo "DATA Obtained"; 
    } else { 
    echo "Error: " . $sql . "<br>" . $conn->error; 
    } 

편집 : 나는 완전히 당신이 볼 수있는 오류가 다른 쿼리에서오고 있기 때문에, 당신도 해당 쿼리를 복구해야 할 점에 유의 깜빡 한 !

$sql = "SELECT * FROM obojok WHERE id_uzivatela = '".$_SESSION['uzivatel']['id']."' AND id_zvierata IS NULL"; 
$res = $conn->query($sql) or throw new Exception("Error: " . $sql . "<br>" . $conn->error); 

이것이 의미하는 것은 그것이 거짓 같지 않은 경우 $ conn-> 쿼리 값으로 $ 입술 = 만들 수 있습니다 : 같은 쿼리를 작성할 때 나는 오랫동안 가지고 하나의 습관은 이런 식으로 작성하는 것입니다 . false의 경우, 관련 정보를 포함한 예외를 Throw합니다.

이렇게하면 $ res가 좋은지 테스트하지 않아도됩니다. 또한 오류가 발생한 위치를 찾는 데 큰 도움이됩니다.