mysqli подготовил ожидаемый параметр? - PullRequest
0 голосов
/ 30 января 2012

Я пытаюсь написать собственный класс базы данных. У меня есть некоторые проблемы.

Когда я запускаю его, он выдает эти ошибки.

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);
    }

}

в чем проблема? Я не могу понять. Спасибо (и извините за мой грамматик).

1 Ответ

2 голосов
/ 30 января 2012

Каждый раз, когда вы видите «логическое значение» в сообщении об ошибке mysql, это означает, что некоторый предыдущий вызов функции mysql завершился неудачно, возвращая логическое значение FALSE.Вы пытаетесь использовать это логическое значение false в текущем вызове mysql и получаете это сообщение.

В вашем коде нет обработки ошибок, что означает, что эти значения FALSE будут распространяться по всему коду, выплевывая эти ошибкиповсюду.

Как минимум, ваш код должен выглядеть примерно так, везде, где вы делаете вызов mysql / mysqli:

function see(){
    $id = 'select * from uyeler where id=?';
    $sor = mysqli_prepare($this->durum, $id);
    if ($sor === FALSE) {
        die(mysqli_error($this->durm));
    }
    etc...
}

Как вы справляетесь с ошибкой, зависит от вас - вв этом случае он просто прервет выполнение сценария и скажет вам, почему.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...