当我尝试调用我的函数时,我正在调用非对象上的成员函数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
答案 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 ");