PDA

View Full Version : سوال: ارور در هنگام اجرای کد PHP



amin7x
پنج شنبه 01 فروردین 1392, 18:47 عصر
سلام دوستان

من توی کد زیر یک ارور دریافت میکنم نمیدونم مشکلش چیه.

کلاس یوزر من :



<?php
include_once('dataBase.class.php');

class user{
private $username;
private $password;
private $mysql;

public function __construct(){
$mysql = new Mysql('localhost', 'root', '', 'test', true);
}

public function Login($username,$password){
$this->username = mysql_real_escape_string(htmlspecialchars($usernam e));
$this->password = mysql_real_escape_string(htmlspecialchars($passwor d));
if(!isset($this->username)||!isset($this->password)){
die("Username & Password Is Not Valid");
}
$this->username = strtolower($this->username);
$this->password = md5(sha1($this->password));
$query = $this->mysql->query("SELECT * FROM `user` WHERE `user`= '$this->username' AND `pass`= '$this->password' LIMIT 1");
return ($query->num_rows() == 1 ? true : false);
}
}

//exampile

$objUser = new user();
if($objUser->Login($_POST['username'],$_POST['password'])){
echo "login succsed";
}
else{
echo "Bad Login";
}
?>


این ارور رو میده


Fatal error: Call to a member function query() on a non-object
برای کار با دیتابیس از این کلاس (http://barnamenevis.org/showthread.php?377968)استفاده کردم.
لطفا کمکم کنید.
ممنون

SilverLearn
پنج شنبه 01 فروردین 1392, 19:26 عصر
یک کوئری داره به اشتباه فرستاده میشه .... یا به درستی به دیتابیس کانکت نمیشه این دو خط رو ببین درسته در کد بالا :
$this->username = mysql_real_escape_string(htmlspecialchars($usernam e)); $this->password = mysql_real_escape_string(htmlspecialchars($passwor d));

2undercover
پنج شنبه 01 فروردین 1392, 20:40 عصر
شما توی متد سازنده داری متغیر mysql رو مقدار میدی نه شئ mysql کلاس رو...!

amin7x
پنج شنبه 01 فروردین 1392, 21:28 عصر
شما توی متد سازنده داری متغیر mysql رو مقدار میدی نه شئ mysql کلاس رو...!
میشه یکم واضحه تر توضیح بدید و با مثال

MMSHFE
جمعه 02 فروردین 1392, 01:36 صبح
باید توی سازنده بنویسید this->mysql$ نه mysql$ یعنی باید به فیلد mysql$ اشاره کنید نه اینکه یک متغیر محلی mysql$ ایجاد کنید.