2012-10-13 1 views
0

를 가져올 수 없습니다, 나는이 코드에 약간의 문제에 봉착 :mysqli :: (준비가) : 나는 PHP에서 이전 <code>mysql_*</code> 기능을 대신 <code>mysqli_*</code> 기능을 사용하기 시작 MySQL의

public function addUser($table, $code = false, $rows = false) { 
    if (!$code) { 
     header("Location: " . $this->authenticate()); 
    } else { 
     $this->getToken($code); 
    } 
    $user = $this->getEndpoint('users/current', false, true); 
    $user = $user->response->user; 
    if (!$rows) 
     $rows = array(
      "remote_id" => $user->id, 
      "firstName" => $user->first_name, 
      "lastName" => $user->last_name, 
      "photo" => $user->photo->medium, 
      "gender" => $user->gender == 'male' ? 1 : 2, 
      "email" => $user->contact->email, 
     ); 
    $rows['access_token'] = $this->accessToken; 
    $stmt = $this->mysql->prepare("SELECT id FROM users WHERE access_token = '{$this->accessToken}'"); //line 136 
    $stmt->execute(); //line 137 
} 

을 코드는이 두 오류를 반환 :

Warning: mysqli::prepare(): Couldn't fetch MySQL in C:\Users\Grega\Server\application\inc\classes\APIConnect.php on line 136

Fatal error: Call to a member function execute() on a non-object in C:\Users\Grega\Server\application\inc\classes\APIConnect.php on line 137

'의 MySQL을 가져올 수 없습니다'에 대한 이유는 무엇입니까

? 데이터베이스 연결이 정확하고, 다른 클래스에서 작동하며, 쿼리를 반향하고 phpMyAdmin에서 실행하면 유효한 결과가 반환됩니다. 또한 내 변수는 mysql이 아니고 mysqli입니다!

+0

이것은 ** 준비된 문장을 사용하는 ** ** 방법이 아닙니다. 너는 아무것도 준비하지 않고있다. – PeeHaa

+1

유용한 링크 : http://codular.com/php-mysqli – saji89

답변

1

MYSQL과 MYSQLi의 차이점에 대해 더 자세히 읽어야합니다. 코드이지만

:

$stmt = $this->mysql->prepare("SELECT id FROM users WHERE access_token = '{$this->accessToken}'"); 

이처럼 수행해야합니다

$stmt = $this->mysql->prepare("SELECT id FROM users WHERE access_token = ?"); 
$stmt->bind_param("s" , $this->accessToken); //Used 's' as I guess that the accessToken is a string 

binding 부분은 prepare 물건의 중요한 부분이다. (귀하의 질의는 안전합니다)

그 후 $stmt->execute();get_result()을 사용할 수 있습니다.

+0

모든 영역을 다루기 위해'? '대신': access_token'과 같은 명명 된 바인딩을 추가하십시오. :) – saji89

+2

내가 아는 한, mysqli는 PDO와 달리 명명 된 바인딩을 지원하지 않는다. –

+0

:: prepare 메소드를 설명해 주셔서 감사합니다. 그러나 이것은 아무것도 수정하지 않습니다. 난 여전히 같은 오류가 발생합니다, 다른 방법을 사용하여 동일한 오류를 반환합니다. – ItsGreg

관련 문제