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

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

طاهر  9 سال پیش  9 سال پیش
0 0

با سلام

بنده کلاسی که استاد در بخش 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(); اشکال میگیره و هر کوئری که قرار بدم با خطا مواجه میشه.

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

 

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

دوست عزیز هر کلاس ، سازنده و مخرب داره که سازنده ها هنگام ایجاد نمونه از کلاس اولین متدی هستند که اجرا و مخرب ها هنگام نابودی نمونه اجرا میشوند. البته در اکثر زبان ها این دو متد هم نام کلاس میباشند که در 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  9 سال پیش
+1 0

در ضمن پارامتر های 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");
0 0
امیدوارم مشکلتون حل بشه کل مراحل شفاف شد به نظرم باز مشکلی بود در خدمتم. (9 سال پیش)
پاسخ به سوال 
طاهر  9 سال پیش
0 0

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

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

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

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

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

0 0
مشکل mysqli و mysql رو هم در اوایل دارند! (9 سال پیش)

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