mysqli准备了期望参数?

时间:2012-01-30 14:50:29

标签: php mysqli

我尝试编写自己的数据库类。我有一些问题。

当我运行它时,会出现这些错误。

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

我将提供数据库类的简短版本。这不完全是,我只写我使用的。

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 个答案:

答案 0 :(得分:2)

任何时候你在mysql错误消息中看到“boolean given”,这意味着某些先前的mysql函数调用失败,返回一个布尔值为FALSE的值。您正尝试在当前的mysql调用中使用该布尔值false,并获取此消息。

您的代码中没有错误处理,这意味着那些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...
}

您如何处理错误取决于您 - 在这种情况下,它只会中止脚本并告诉您原因。