2012-01-30 9 views
0

나는 자신의 데이터베이스 클래스를 작성하려고합니다. 몇 가지 문제가 있습니다.mysqli prepared expect 매개 변수?

실행할 때 이러한 오류가 발생합니다.

Warning: mysqli_stmt_bind_param() expects parameter 1 to be mysqli_stmt, boolean given in /Users/emrecetin/www/ayrox/m/db.php on line 75 

Warning: mysqli_stmt_execute() expects parameter 1 to be mysqli_stmt, boolean given in /Users/emrecetin/www/ayrox/m/db.php on line 76 

Warning: mysqli_stmt_bind_result() expects parameter 1 to be mysqli_stmt, boolean given in /Users/emrecetin/www/ayrox/m/db.php on line 77 

Warning: mysqli_stmt_fetch() expects parameter 1 to be mysqli_stmt, boolean given in /Users/emrecetin/www/ayrox/m/db.php on line 78 

이 줄에 있습니다.

mysqli_stmt_bind_param($sor, 's', $hede); 
mysqli_stmt_execute($sor); 
mysqli_stmt_bind_result($sor, $bas); 
mysqli_stmt_fetch($sor); 

나는 databse 클래스의 짧은 버전을 제공 할 것이다. 정확히는 아니지만, 나는 내가 쓰는 것을 쓴다.

class db{ 

    public $durum; 
    protected $server = 'localhost'; 
    protected $suser = 'root'; 
    protected $spass = 'root'; 
    public $db = 'members'; 

    public $durum; // mysqli durumu 
    public $sor; // mysql_query ile birleştirilen hali 
    public $kacsonuc; 

    function db(){ 
     $this->durum = mysqli_connect($this->server,$this->suser,$this->spass); 
     $this->dbchoose($this->db) 
    } 

    function dbchoose($db){ 
     if(!mysqli_select_db($this->durum,$db)){ 
      $this->errors[] = 'Database cant choose'; 
      $this->hata=True; 
     } 

    function see(){ 
     $id = 'select * from uyeler where id=?'; 
     $sor = mysqli_prepare($this->durum, $id); 
     $hede = '3'; 
     mysqli_stmt_bind_param($sor, 's', $hede); 
     mysqli_stmt_execute($sor); 
     mysqli_stmt_bind_result($sor, $bas); 
     mysqli_stmt_fetch($sor); 
    } 

} 

무엇이 문제입니까? 나는 이해할 수 없다. 고맙다. (그리고 나의 문구를 유감스럽게 생각한다).

+0

문제를 해결했습니다. mysqli 클래스로 다시 작성합니다. 간단합니다. 이제 오류 코드를 작성할 것입니다. 감사합니다. [코드 링크] (http://paste.org/44652) – Ayro

답변

2

mysql 에러 메시지에 "boolean given"이 표시되면 이전의 일부 mysql 함수 호출이 실패하여 부울 FALSE 값을 반환한다는 것을 의미합니다. 현재의 mysql 호출에서 그 boolean 값을 false로 사용하려고 시도하고있다.

코드에서 오류 처리가 없으므로 FALSE 값이 코드 전체에 전파되어 어디에서나 오류가 발생합니다. 이 경우에는 단순히를 중단합니다 -

오류가 당신에게 달려 처리 방법
function see(){ 
    $id = 'select * from uyeler where id=?'; 
    $sor = mysqli_prepare($this->durum, $id); 
    if ($sor === FALSE) { 
     die(mysqli_error($this->durm)); 
    } 
    etc... 
} 

: 최소한

, 코드는 사방이 mysql을/mysqli 호출을, 다음과 비슷한 모습이 될 것입니다 스크립트와 이유를 말해.

+0

편집 : 문제가 있습니다. ı 붙여 넣기 : [paste.org] (http://paste.org/44638) 할 때, 모든 것들이 승인. – Ayro

+0

실제 오류 메시지를 로깅하는 것이 좋습니다. 문제가 있다고 말하는 것이 좋지만 문제가 무엇인지 말하지 않는 것은 디버깅 할 때 상당히 쓸모가 없습니다. 자동차의 체크 엔진 라이트처럼. 귀하의 변속기가 도로에서 2 마일 뒤로 떨어 졌거나 가스 캡을 조이는 것을 잊었습니다. –

+0

고마워. 나는 그렇게 할거야.하지만 나는 정말로 이것을 이해할 수 없다. [http://paste.org/44640](http://paste.org/44640)] 아무런 문제가 없다. 연결은 괜찮다. 데이터베이스를 선택한다. 부탁드립니다. 준비를 할 때 문제가 있습니다. 다시 연결하여 선택합니다. 실제 문제는 어디입니까 ... – Ayro

관련 문제