调用成员函数查询oop

时间:2014-02-20 21:28:10

标签: php mysql oop

当我尝试调用我的函数时,我正在调用非对象上的成员函数query()。

我的代码如下所示:

class Uzytkownik {

    public function loguj($nazwa_uz_l, $haslo_l) {

        require('funkcje_bazy.php');

        //$lacz = lacz_bd();
        $this->lacz = new Polacz('localhost', 'root', '', 'lupo24_db');       

        $nazwa_uz_l = trim($_POST['nazwa_uz_l']);
        $haslo_l = trim($_POST['haslo_l']);

        $this->lacz->query("SELECT * FROM uzytkownicy WHERE  email='". $this->lacz->real_escape_string($nazwa_uz_l) ."' AND haslo = '". $this->lacz->real_escape_string($haslo_l) ."' AND aktywacja IS NULL ");         

        if($this->lacz->num_rows>0)
        {
            $_SESSION['prawid_uzyt'] = $nazwa_uz_l;
        } 
        else 
        {
            echo 'Logowanie sie nie powiodlo.';
        }
    }
}

funkcje_bazy.php:

class Polacz {

    public function __construct($domena, $uzytkownik, $haslo, $baza) {

        $domena;
        $uzytkownik;
        $haslo;
        $baza;

        $this->lacz = new mysqli($domena, $uzytkownik, $haslo, $baza);

        if ($this->lacz->connect_errno) {
            echo "Nie mozna sie polaczyc z MySQL: (" . $this->lacz->connect_errno . ") " . $this->lacz->connect_error;
        }

        if($this->lacz == true)
        {
            echo 'Polaczono. ';
            return $this->lacz;
        }
        else
        {
            echo 'Brak polaczenia z baza. ';
            return false;
        }

        $this->lacz->close();
    }
}

错误:

Polaczono.
Fatal error: Call to undefined method Polacz::query() in C:\xampp\htdocs\uzytkownik.php on line 15

2 个答案:

答案 0 :(得分:4)

您的课程没有财产lacz

变化:

$lacz = new Polacz('localhost', 'root', '', 'lupo24_db');

为:

$this->lacz = new Polacz('localhost', 'root', '', 'lupo24_db');

或者,您可以将所有$this->lacz更改为$lacz

更新:

根据您的修改,您现在的问题是您的Polacz类没有方法query。从您的代码看起来您​​正在尝试为mysqli对象创建包装器。你需要在Polacz中创建一个方法来包装mysqli->query()或者只是在Uzytkownik中使用mysqli对象。

答案 1 :(得分:0)

$lacz->query("SELECT * FROM uzytkownicy WHERE  email='". $lacz->real_escape_string($nazwa_uz_l) ."' AND haslo = '". $lacz->real_escape_string($haslo_l) ."' AND aktywacja IS NULL ");