/
  • مشکل در query گرفتن

  • ارسال پاسخ   امتیاز موضوع:
    • 1 رأی - میانگین امیتازات: 5
    • 1
    • 2
    • 3
    • 4
    • 5

    حالت موضوعی | حالت خطی مشکل در query گرفتن
    نویسنده پیام
    kiarash_kcm آفلاین
    عضو
    ***

    ارسال‌ها: 159
    تاریخ عضویت: ۱۳۹۲ بهمن ۷
    اعتبار: 5
    تشکرها : 12
    ( 48 تشکر در 41 ارسال )
    ارسال: #1
    مشکل در query گرفتن
    سلام خدمت اساتید

    من یه صفحه دارم فرض کنید به اسم

    1.php
    کد PHP:
    <?php 
    class database
    {
        function 
    __construct()
    {
        try
        {
            
    $host="localhost";
            
    $name="counter";
            
    $type="mysql";
            
    $user="root";
            
    $pass="";
            
    $dsn="$type:host=$host;dbname=$name";
            
    $connect=new PDO($dsn,$user,$pass);
            return 
    $connect;
        }
        catch(
    PDOException $error)
        {
        echo 
    "No";
        }
    }
    }
    ?>

    و یه صفحه دیگه هم دارم به اسم :
    2.php
    کد PHP:
    <?php
    include ('1.php');
    $connect=new database();
    $sql="INSERT INTO counter (country, city, state, timelogin, datelogin) VALUES('IR', 'Tehran', 'CA', '0000-00-00', '00:00:00')";
    $test=$connect->query($sql);
    ?>

    من وقتی صفحه 2 رو باز میکنم با خطا مواجه میشم :

    Fatal error: Call to undefined method database::query() in C:\wamp\www\test.php on line 5

    میشه یه راهنمایی کنید ؟
    وقتی از کلاس استفاده نکنم تو صفحه 1 مشکلم حل میشه اما وقتی داخل کلاس میره اینجوری میشه ...

    ممنون از جوابتون پیش پیش
    __________________________________________________________________________
    [تصویر:  iranphp.jpg]
    (آخرین ویرایش در این ارسال: ۱۳۹۵ ارديبهشت ۳۱ ۰۹:۵۰ صبح، توسط kiarash_kcm.)
    ۱۳۹۵ ارديبهشت ۳۱ ۰۹:۴۸ صبح
    یافتن ارسال‌ها WWW پاسخ با نقل قول
     تشکر شده توسط :
    kasbookar آفلاین
    **(فرشاد انگوتی)**
    ****

    ارسال‌ها: 525
    تاریخ عضویت: ۱۳۹۳ دي ۲۳
    اعتبار: 17
    تشکرها : 258
    ( 169 تشکر در 128 ارسال )
    ارسال: #2
    RE: مشکل در query گرفتن
    سلام
    سعی کنید از pdo به صورت توابع استفاده نمایید
    مانند این روش
    کد PHP:
    class database
    {
        protected 
    $_link,$_rowcount;
        
        public function 
    __construct($con,$server_username,$server_password)
        {
            
            try
            {
                
    $this->_link=new PDO($con,$server_username,$server_password, array(PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES 'utf8'"));
                
            }
            catch(
    PDOEXception $e)
            {
                exit(
    "error in connect");
            }
        }
        
        public function 
    query($sql)
        {
            
    $query=$this->_link->prepare($sql);
            
    $query->execute();
        }
        

    خودتون میتونید بیهایت public function تعریف کنید و از اون توی برنامه هاتون استفاده کنید مثلا اینجا تابع query برای درج و حذف از دیتابیس کاربرد داره
    برای استفاده هم فقط باید این فایل یا کد رو توی صفحتون اینکلود کنید
    __________________________________________________________________________

    ۱۳۹۵ ارديبهشت ۳۱ ۰۱:۲۸ عصر
    یافتن ارسال‌ها WWW پاسخ با نقل قول
     تشکر شده توسط : kiarash_kcm
    kiarash_kcm آفلاین
    عضو
    ***

    ارسال‌ها: 159
    تاریخ عضویت: ۱۳۹۲ بهمن ۷
    اعتبار: 5
    تشکرها : 12
    ( 48 تشکر در 41 ارسال )
    ارسال: #3
    RE: مشکل در query گرفتن
    ممنون ... ولی من این مثال رو زدم که با زبان ساده مشکلم حل بشه ... حالا اونجوری که رو پروژه نوشتم رو میگذارم لطفا رو همین کد ها کمک کنید که خیلی واجب هستش :

    من یه فایل دارم به اسم

    database.php در فولدر config:

    کد PHP:
    <?php
    define
    ('DB_TYPE','mysql');
    define('DB_HOST','localhost');
    define('DB_NAME','counter');
    define('DB_USER','root');
    define('DB_PASS','');
    ?>

    یه فایل دیگه هست به اسم :

    database.php در فولدر LIBS :
    کد PHP:
    <?php
    class Database
    {
        function 
    __construct()
        {
            try
            {
                
    $dsn=DB_TYPE.":host=".DB_HOST.";dbname=".DB_NAME;
                
    $con=new PDO($dsn,DB_USER,DB_PASS);    
                
    //return $con;
            
    }
            catch(
    PDOException $error)
            {        
                Echo 
    "I can't Connect to the Database";
            }

        }
    }
    ?>
    یه فایل هم در فولد Models دارم به اسم counter.php :

    کد PHP:
    <?php
    class counter
    {
        function 
    __construct()
        {
            
    $con=new Database();
            
    $sql="INSERT INTO counter (country, city, state, timelogin, datelogin) VALUES('d', 'd', 'd', 'd', 'f')";
            
    $result=$con->query($sql);
        }
    }
    ?>

    و فکر کنید من در یه صفحه دیگه این 3 تا صفحه رو include کردم و یه شی از کلاس counter هم ساختم اما خطا میگیره ... برای همین کد رو ساده کردم جای دیگه و قسمت اتصال به بانک رو از حالت class در آوردم بعد کد راحت کار کرد ...یه مشکلی در صفحه counter.php وجود داره لطف کنید اساتید یه راهنمایی به من بکنید خیلی خیلی ممنون.
    __________________________________________________________________________
    [تصویر:  iranphp.jpg]
    (آخرین ویرایش در این ارسال: ۱۳۹۵ ارديبهشت ۳۱ ۰۷:۱۰ عصر، توسط kiarash_kcm.)
    ۱۳۹۵ ارديبهشت ۳۱ ۰۶:۵۸ عصر
    یافتن ارسال‌ها WWW پاسخ با نقل قول
     تشکر شده توسط :
    kiarash_kcm آفلاین
    عضو
    ***

    ارسال‌ها: 159
    تاریخ عضویت: ۱۳۹۲ بهمن ۷
    اعتبار: 5
    تشکرها : 12
    ( 48 تشکر در 41 ارسال )
    ارسال: #4
    RE: مشکل در query گرفتن
    (۱۳۹۵ ارديبهشت ۳۱ ۰۱:۲۸ عصر)kasbookar نوشته شده توسط:  سلام
    سعی کنید از pdo به صورت توابع استفاده نمایید
    مانند این روش
    کد PHP:
    class database
    {
        protected 
    $_link,$_rowcount;
        
        public function 
    __construct($con,$server_username,$server_password)
        {
            
            try
            {
                
    $this->_link=new PDO($con,$server_username,$server_password, array(PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES 'utf8'"));
                
            }
            catch(
    PDOEXception $e)
            {
                exit(
    "error in connect");
            }
        }
        
        public function 
    query($sql)
        {
            
    $query=$this->_link->prepare($sql);
            
    $query->execute();
        }
        

    خودتون میتونید بیهایت public function تعریف کنید و از اون توی برنامه هاتون استفاده کنید مثلا اینجا تابع query برای درج و حذف از دیتابیس کاربرد داره
    برای استفاده هم فقط باید این فایل یا کد رو توی صفحتون اینکلود کنید

    ممنون با کمی تغییر رو کد شما مشکل رو حل کردم ... ممنون از کمکت ... سوال من هنوز سر جاش اما مشکلم حل شد ... مرسیییییییی
    __________________________________________________________________________
    [تصویر:  iranphp.jpg]
    ۱۳۹۵ ارديبهشت ۳۱ ۰۸:۴۹ عصر
    یافتن ارسال‌ها WWW پاسخ با نقل قول
     تشکر شده توسط :
    Reza آفلاین
    رضا شیخله
    *****

    ارسال‌ها: 3,024
    تاریخ عضویت: ۱۳۹۰ آبان ۱۶
    اعتبار: 133
    تشکرها : 2724
    ( 2716 تشکر در 1692 ارسال )
    ارسال: #5
    RE: مشکل در query گرفتن
    نقل قول: و فکر کنید من در یه صفحه دیگه این 3 تا صفحه رو include کردم و یه شی از کلاس counter هم ساختم اما خطا میگیره ... برای همین کد رو ساده کردم جای دیگه و قسمت اتصال به بانک رو از حالت class در آوردم بعد کد راحت کار کرد ...یه مشکلی در صفحه counter.php وجود داره لطف کنید اساتید یه راهنمایی به من بکنید خیلی خیلی ممنون.
    شما داخل counter اومدید یک شی به اسم con ساختید و خواستید متد query از شی con رو اجرا کنید

    شی con از کلاس database هست و متدی به اسم query تعریف نشده براش !!!
    من احساس میکنم شما دارید به ذهنیت تابعی از کلاسها استفاده میکنید
    اینکه توی construct شی pdo رو خروجی بدید که نمیشه !

    اگه سر در گم نمیشید یه روشی بگم از اون استفاده کنید

    شما یک کلاس رجیستری بسازید و هر جا از هر ابزاری مثلا دیتابیس و ... شی ای ساختید بریزید توی رجیستری و خلاص
    __________________________________________________________________________
    -- - RezaWorkShop.ir - blog.RezaOnline.net
    ۱۳۹۵ ارديبهشت ۳۱ ۰۹:۳۸ عصر
    یافتن ارسال‌ها WWW پاسخ با نقل قول
     تشکر شده توسط : kasbookar
    kiarash_kcm آفلاین
    عضو
    ***

    ارسال‌ها: 159
    تاریخ عضویت: ۱۳۹۲ بهمن ۷
    اعتبار: 5
    تشکرها : 12
    ( 48 تشکر در 41 ارسال )
    ارسال: #6
    RE: مشکل در query گرفتن
    (۱۳۹۵ ارديبهشت ۳۱ ۰۹:۳۸ عصر)Reza نوشته شده توسط:  
    نقل قول: و فکر کنید من در یه صفحه دیگه این 3 تا صفحه رو include کردم و یه شی از کلاس counter هم ساختم اما خطا میگیره ... برای همین کد رو ساده کردم جای دیگه و قسمت اتصال به بانک رو از حالت class در آوردم بعد کد راحت کار کرد ...یه مشکلی در صفحه counter.php وجود داره لطف کنید اساتید یه راهنمایی به من بکنید خیلی خیلی ممنون.
    شما داخل counter اومدید یک شی به اسم con ساختید و خواستید متد query از شی con رو اجرا کنید

    شی con از کلاس database هست و متدی به اسم query تعریف نشده براش !!!
    من احساس میکنم شما دارید به ذهنیت تابعی از کلاسها استفاده میکنید
    اینکه توی construct شی pdo رو خروجی بدید که نمیشه !

    اگه سر در گم نمیشید یه روشی بگم از اون استفاده کنید

    شما یک کلاس رجیستری بسازید و هر جا از هر ابزاری مثلا دیتابیس و ... شی ای ساختید بریزید توی رجیستری و خلاص

    خیلی خیلی ممنونم متوجه اشتباهم شدم ... توضیح شما عالی بود ممنون
    __________________________________________________________________________
    [تصویر:  iranphp.jpg]
    ۱۳۹۵ ارديبهشت ۳۱ ۱۰:۲۰ عصر
    یافتن ارسال‌ها WWW پاسخ با نقل قول
     تشکر شده توسط :
    « قدیمی تر | تازه‌ تر »

    ارسال پاسخ
    پرش به انجمن:


    کاربرانِ درحال بازدید از این موضوع: 1 مهمان
    IranPHP.org | تماس با ما | بازگشت به بالا | بازگشت به محتوا | بایگانی | پیوند سایتی RSS