-1

mysqli を使用しようとしていますが、何時間も修正しようとしてもエラーが発生します。

これはデータベースクラスです

class db {

    public $mysqli;

    function __construct(){
        $mysqli = new mysqli('host', 'user', 'password', 'database');
    }

    function clean($string){
        $string = $mysqli->real_escape_string($string);
    }

}

そして、そのようにテストページでそれを呼び出そうとすると、

$db = new db();
$db->clean("hi");

エラーが発生します:

注意: 未定義の変数: 12 行目の C:\xampp\htdocs\eat\class\db.class.php の mysqli

致命的なエラー: 12 行目の C:\xampp\htdocs\eat\class\db.class.php の非オブジェクトに対するメンバー関数 real_escape_string() の呼び出し

ここで何か間違ったことはありますか?私は長い間phpマニュアルとstackoverflowを精査してきましたが、他の誰もこのエラーに直面していないようです.

4

2 に答える 2

3

$mysqliメソッドスコープで変数を使用しています。$thisオブジェクトスコープにアクセスするために使用する必要があります。

class db {

    public $mysqli;

    function __construct(){
        $this->mysqli = new mysqli('host', 'user', 'password', 'database');
    }

    function clean($string){
        return $this->mysqli->real_escape_string($string);
    }

}
于 2013-02-05T20:13:07.937 に答える
0

As isクラスメソッド内で変数を宣言しないということを聞いたことがありますか?

$this->変数のスコープを参照するときは、常に使用する必要があります。

以下は、変数へのアクセス方法の青写真です。

class foo {

$who= "MyName";

function __construct() {

$this->who;

}

}

上記の例ではwho、関数内で変数を参照しています。

于 2013-02-05T20:16:28.670 に答える