آموزش های این وب سایت به صورت رایگان در دسترس است. اطلاعات بیشتر
بروز خطا
   [message]
اشتراک در سوال
رای ها
[dataList]

این خطا Call to a member function query() on a non-object in ؟ (حل شد.)

Borhani  11 سال پیش  11 سال پیش
0 0

مشکل این سورس چیه؟

 class DB {
private $connection;

public function __construct() {
$this->connection = mysql_connect(DB_HOST, DB_USER, DB_PASS, DB_NAME);
Line7 $this->connection->query("SET NAMES UTF-8");

}

public function query($sql) {
$result = $this->connection->query($sql);
$output = array();
while ($row = mysql_fetch_assoc($result)) {
$output[] = $row;
}

return $output;
}
public function query($sql) {
Line12 $result = $this->connection->query($sql);
$output = array();
while ($row = mysql_fetch_assoc($result)) {
$output[] = $row;
}

return $output;
}

پیام خطا

 

Fatal error: Call to a member function query() on a non-object in D:\Tset_web\cms\core\db.php on line 7

 

 
 برای این سوال 3 پاسخ وجود دارد.
پاسخ به سوال 
Mr Mehdi  11 سال پیش
+1 0

فکر کنم اینطوری هست خط 7

  $this->connection->mysql_query("SET NAMES utf8");

ویرایش:
دقیق یادم نیست یا "SET NAMES utf8" بود یا " 'SET NAMES 'utf8" یا "SET NAMES UTF-8" اما چیزی که واضحه اون تیکه mysql_query که شما اشتباها query نوشتید

0 0
سلام تشکر از پاسختون عین سورس استاد رو نوشتم و برای استاد در آموزش ایرور نمیداد اما برای من ایرور می دهد . نه این صحبتی که می فرمایید مشکل رو حل نمیکنه. (11 سال پیش)
0 0
فکر میکنم مشکل از construct می باشد چون وقتی تبدیل به constructor می کنم خط 7 رو عبور می کنه و روی خط 12 همون ایرور رو می دهد. (11 سال پیش)
0 0
توو فیلم ها از mysqli استفاده شده ولی شما از mysql استفاده کردین.اگر میخواین mysqli بصورت شی گرا استفاده کنین باید new کنید. (11 سال پیش)
پاسخ به سوال 
محسن موحد  11 سال پیش
+3 0

تابع mysql شی گرا نیست و شیئی بر نمیگردونه واسه همین اررور داده که connetion آبجکت نیست.
نکته ی دیگه , متد های داخل کلاس با this$ قابل دستیابی هستن.
یه نمونه واست از همین کلاسی که ساختی میارم.باید به این شکل عمل کنی:

class DB
{
    private $connection;

    public function __construct()
    {
        $this->connection = mysql_connect(DB_HOST, DB_USER, DB_PASS) or die('connection error');
        mysql_select_db(DB_NAME) or die('db error');
		$this->query("SET NAMES 'UTF8'");
    }

    public function query($sql)
    {
    	return mysql_query($sql);
    }

    public function arrayQuery($sql)
    {
        $result = $this->query($sql);
        $output = array();
        if ($result && mysql_num_rows($result) > 0)
        {
        	while ($row = mysql_fetch_assoc($result))
        	{
        	    $output[] = $row;
        	}
        }
        return $output;
    }
}
0 0
سلام تشکر از پاسختون ایرور برطرف شد اما یک ایراد دیگر به وجود آمد اطلاعات رکورد ذخیره شده در دیتابیس نمی آید. (11 سال پیش)
پاسخ به سوال 
محسن موحد  11 سال پیش
+3 0

خوب اگه بصورت mysqli میخوای کار کنی باید  کلاس mysqli رو فراخوانی کنی با new و یک شیء ایجاد کنی.

به این شکل:

 class DB
 {
    private $connection;

    public function __construct()
    {
        $this->connection = new mysqli(DB_HOST, DB_USER, DB_PASS, DB_NAME);
        $this->connection->query("SET NAMES 'UTF8'");
    }

    public function query($sql)
    {
        $result = $this->connection->query($sql);
        $output = array();
        if($result && $result->num_rows > 0)
		{
	        while ($row = $result->fetch_assoc())
	        {
	            $output[] = $row;
	        }
	    }
        return $output;
    }
}

construct__ درسته.تغییرش نده.

0 0
سلام مجدد مهندس جان این روش جواب داد و اطلاعات دیتابیس اومد اما ؟؟؟ اینجوری (11 سال پیش)
+1 0
خط تیره ی UTF-8 رو بردار. این درسته: UTF8 (11 سال پیش)
0 0
پست تصحیح شد. (11 سال پیش)

پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .