2011-09-29 4 views
0

PHP 블로그 엔진을 작성 중입니다. PDO를 사용하고 있습니다. 그리고 지금, 내가 수업을 작성하고있을 때 - 나는 오류가 있습니다. 내 클래스의PDO 오해

Fatal error: Call to a member function fetch() on a non-object in /home/tucnak/Server/scripts/php/classes/Member.php on line 42

그리고 소스 코드 :

public function authMember($user, $password) 
{ 
    $password = hashIt($password); 
    $count = 100500; 
    $count = $this->db->query("SELECT count(*) FROM users-general WHERE nick = $user AND password = $password;")->fetch(); 
    echo($count); 
    // if ($count == 1){ return 1; } else { throw new Exception("",491); } 
} 

나는이 기능을 사용하여 오류가 있습니다.

답변

2

따옴표로 묶지 않아 쿼리가 실패 할 수 있습니다.

이렇게되면 query()은 객체 대신 false을 반환하여 체인을 끊습니다.

이렇게하지 마십시오. 먼저 쿼리를 실행하고 결과를 저장 한 다음 false인지 확인하십시오.

그런데 실제로 준비된 문장을 사용해야합니다. 현재 문장은 SQL injection에 취약합니다. 2 개 다른 유형

생각의

+0

감사합니다. 하지만 난 내 SQL 구문에서 오류를 찾을 수 없습니다. – tucnak

+0

'nick = $ user AND password = $ password;''$ user' 및'$ password' 주위에 따옴표가 없습니다. –

0
"SELECT count(*) FROM `users-general` WHERE nick = '$user' AND password = '$password'" 

노트 작은 따옴표, 당신의 오해는 PDO과는 아무 상관이 없습니다. 그것은 배울 수있는 기본적인 SQL 구문입니다

+0

감사합니다. 나는 총 바보 야. – tucnak