بروز خطا
   [message]
اشتراک در سوال
رای ها
[dataList]
پرسش و پاسخ

مشکل کار با کلاس دیتابیس (حل شد)

مدیریت گفتگو
طاهر 11 سال پیش
آخرین تغییر: 11 سال پیش

با سلام

بنده کلاسی که استاد در بخش 9 برای کار با دیتابیس رو آموزش دادن دقیقا اجرا کردم ولی با خطای زیر مواجه میشم .

 line13: $this->connection->query("SET NAMES UTF8");


Fatal error: Call to a member function query() on a non-object in F:\wamp\...\db.php on line 13

از قسمت  $this->connection->query(); اشکال میگیره و هر کوئری که قرار بدم با خطا مواجه میشه.

کسی میدونه چطور میشه حلش کرد ؟

 

نظرات

hamid_sub7 11 سال پیش
دوست عزیز حداقل کل سورس کلاس DB رو میذاشتید تا بشه خطایابی کرد! شما داخل سازنده که این دستور رو مینویسی آیا بیرون سازنده بصورت private متغیر connection رو تعریف کردید ؟ بهتر بود کل سورس رو میگذاشتید.
طاهر 11 سال پیش
من که متوجه منظورتون نشدم . همانطور که گفتم دقیقا طبق آموزش ها کلاس DB رو ایجاد کردم
محسن موحد 11 سال پیش
سلام.کلاس دیتابیستونو کدشو بذارید. توو این کد آبجکتی وجود نداره.

پاسخ‌ها 3

hamid_sub7 11 سال پیش

دوست عزیز هر کلاس ، سازنده و مخرب داره که سازنده ها هنگام ایجاد نمونه از کلاس اولین متدی هستند که اجرا و مخرب ها هنگام نابودی نمونه اجرا میشوند. البته در اکثر زبان ها این دو متد هم نام کلاس میباشند که در php و java از همون عبارت construactor استفاده شده که واسه مخرب ها از علامت ! استفاده میشود. البته اینا خارج از این بحث بود % من سورس کلاس رو که استاد نوشتن رو کامل میذارم و کاملا هم درسته من ازش استفاده کردم البته یه متد exeSQL اضافه شده که استاد در آینده توضیح خواهند داد برای دستورات INSERT , DELETE از آن استفاده میشود %

 <?php

class DB{

    private $connection;
    public function __construct(){
        $this->connection = mysqli_connect(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();

        while($row = mysqli_fetch_assoc($result)){
            $output[] = $row;
        }

        return $output;
    }

    public function execSQL($sql){
        $result = $this->connection->query($sql);

        return $result;
    }

    public  function close(){
        $this->connection->close();
    }
}

نظرات

hamid_sub7 11 سال پیش

در ضمن پارامتر های mysqli_connect رو باید تو فایل config.php مشخص کنید طبق فرمایشات استاد و در آخر هم اونا رو مانند زیر در فایل index.php مربوط به روتینگ Require کنید :

require(getcwd() . "/config.php");
require(getcwd() . "/controller/controller.php");
require(getcwd() . "/core/db.php");
require(getcwd() . "/core/render.php");

نظرات

hamid_sub7 11 سال پیش
امیدوارم مشکلتون حل بشه کل مراحل شفاف شد به نظرم باز مشکلی بود در خدمتم.
طاهر 11 سال پیش

مشکل از خط زیر بود

    $this->connection = mysql_connect(DB_HOST,DB_USER,DB_PASS,DB_NAME);

که باید اینگونه درج میشد

    $this->connection = mysqli_connect(DB_HOST,DB_USER,DB_PASS,DB_NAME);

یه اشتباه خیلی ریز و کوچک

نظرات

hamid_sub7 11 سال پیش
مشکل mysqli و mysql رو هم در اوایل دارند!

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