/
  • مشکل در oop و pdo

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

    حالت موضوعی | حالت خطی مشکل در oop و pdo
    نویسنده پیام
    ImanAzadi آفلاین
    عضو
    ***

    ارسال‌ها: 246
    تاریخ عضویت: ۱۳۹۲ اسفند ۲
    اعتبار: 0
    تشکرها : 36
    ( 9 تشکر در 9 ارسال )
    ارسال: #1
    مشکل در oop و pdo
    با سلام

    دارم یک کلاس دیتابیس با pdo به صورت oop می نویسم

    واسم یه مشکل عجب پیش اومده

    کد:
    class db{


        private $pdo;
            
        private $host='localhost';
        private $user='root';
        private $password='';
        private $database='tttt';
        
        private $stmt;
        private $err_msg;
        
        
        public function __construct()
        {
            $this->open_connection();
        }
        
        
        
        
        
        public function open_connection()
        {    
            try
            {
                $this->pdo=@new PDO("mysql:host=$this->host;dbname=$this->database;charset=utf8",$this->user,$this->password);
                  

                    
                return true;                
                
            }
        
            catch(PDOException $e)
            {    
                $this->err_msg="Error : ". $e->getMessage();
                return false;
            }
                
        }


    public function prepare($sql,$param)
        {        
            try
            {
                $stmt=$this->pdo->prepare($sql);                
                if($stmt->execute($param))
                {
                    $this->stmt=$stmt;
                    return true;
                }
                    
            }
            catch(PDOException $e)
            {        
                $this->err_msg="Error : ". $e->getMessage();            
                return false;
            }        
        }

    حالا وقتی از کلاس نمونه میسازیم
    کد:
    $rr=new db;




    $bb=$rr->prepare("UPDATE MENU set label=?,link=?,sort=? where id>?",array("test","linktest","2",5));






    echo $bb->fetchAll();

    چرا تو متغییر bb به متدهای stmt مثل fetchall و بقیه دسترسی داریم ؟؟؟؟
    مگر نباید متغییر bb ما فقط true یا false باشه ؟؟؟؟
    ۱۳۹۴ شهريور ۱۵ ۰۹:۱۷ صبح
    یافتن ارسال‌ها پاسخ با نقل قول
     تشکر شده توسط :
    mohammadhosain آفلاین
    محمد حسین
    ***

    ارسال‌ها: 217
    تاریخ عضویت: ۱۳۹۱ شهريور ۱۵
    اعتبار: 16
    تشکرها : 85
    ( 135 تشکر در 92 ارسال )
    ارسال: #2
    RE: مشکل در oop و pdo
    .سلام
    نتیجه اجرای من :
    کد PHP:
    Fatal errorCall to a member function fetchAll() on a non-object in /var/www/html/test/a.php on line 74 
    فقط true/false برگشت می ده ! البته اگر if اجرا نشه هیچی برگشت نمی ده.
    __________________________________________________________________________
    سامانه یادآوری خمس
    سایت هدیه صلوات،حاجت،آرامگاه مجازی+اپلیکشن موبایل
    سایت نظرسنجی
    https://github.com/mhfeizi
    ۱۳۹۴ شهريور ۱۵ ۱۲:۱۶ عصر
    یافتن ارسال‌ها پاسخ با نقل قول
     تشکر شده توسط :
    ImanAzadi آفلاین
    عضو
    ***

    ارسال‌ها: 246
    تاریخ عضویت: ۱۳۹۲ اسفند ۲
    اعتبار: 0
    تشکرها : 36
    ( 9 تشکر در 9 ارسال )
    ارسال: #3
    RE: مشکل در oop و pdo
    واسه منم همین پیام رو نشون میده ولی چرا متدها رو پس از bb-> نشون میده ؟؟؟

    یه سوال دیگه اینکه catch چه موقعی اجرا میشه ؟؟
    چون زمانی که من در تابع فوق
    کد:
    public function prepare($sql,$param)
    یه فرمان اشتباه میدم یا حتی پارامتر رو به غلط میدم catch عمل نمیکنه
    ۱۳۹۴ شهريور ۱۵ ۰۳:۱۷ عصر
    یافتن ارسال‌ها پاسخ با نقل قول
     تشکر شده توسط :
    mohammadhosain آفلاین
    محمد حسین
    ***

    ارسال‌ها: 217
    تاریخ عضویت: ۱۳۹۱ شهريور ۱۵
    اعتبار: 16
    تشکرها : 85
    ( 135 تشکر در 92 ارسال )
    ارسال: #4
    RE: مشکل در oop و pdo
    .اگه منظورت اینه که IDE بعد bb متدها رو نشون می ده خب این می تونه یه اشکال IDE باشه و ربطی به php نداره.
    catche برای execute اجرا نمی شه چون فقط t/f برمیگردونه ولی برای prepare اگه error_reporting غیر فعال نباشه اجرا می شه مثلا کد زیر رو تست کن :
    کد PHP:
    $bb=$rr->prepare("UPDATE MENU set label=?,link=,sort=? where id>?",array("test","linktest","2",5)); 
    __________________________________________________________________________
    سامانه یادآوری خمس
    سایت هدیه صلوات،حاجت،آرامگاه مجازی+اپلیکشن موبایل
    سایت نظرسنجی
    https://github.com/mhfeizi
    ۱۳۹۴ شهريور ۱۶ ۰۹:۴۱ صبح
    یافتن ارسال‌ها پاسخ با نقل قول
     تشکر شده توسط :
    « قدیمی تر | تازه‌ تر »

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


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