حسام قاسمی
2 سال پیش توسط حسام قاسمی مطرح شد
2 پاسخ

ارور Uncaught PDOException

باسلام

 Fatal error: Uncaught PDOException: SQLSTATE[HY000]: General error: PDO::ATTR_STATEMENT_CLASS requires format array(classname, array(ctor_args)); the classname must be a string specifying an existing class in D:\xamp\htdocs\digikalamvc\core\model.php:54 Stack trace: #0 D:\xamp\htdocs\digikalamvc\core\model.php(54): PDO->prepare('insert into tbl...', Array) #1 D:\xamp\htdocs\digikalamvc\models\model_showcart4.php(105): model->doupdate('insert into tbl...', Array) #2 D:\xamp\htdocs\digikalamvc\controllers\showcart4.php(29): model_showcart4->saveorder(Array) #3 D:\xamp\htdocs\digikalamvc\core\app.php(29): showcart4->saveorder() #4 D:\xamp\htdocs\digikalamvc\index.php(7): App->__construct() #5 {main} thrown in D:\xamp\htdocs\digikalamvc\core\model.php on line 54

ممنون میشم راهنمایی کنید


ثبت پرسش جدید
حسام قاسمی
@hesam64 2 سال پیش آپدیت شد
0

با سلام تو فایل model که فایل هسته است . متدی تحت عنوان doupdate تعریف کردم که تمام کوئری ها به جز select را انجام میدهد.
model line 54

   function doupdate($sql, $valus=[])
    {
        $stmt = self::$conn->prepare($sql, $valus);
        foreach ($valus as $key => $valu) {
            $stmt->bindValue($key + 1, $valu);
        }
        $stmt->execute();

    }

و سپس در فایلی دیگر که extends شده ار model اصلی فانکشنی به عنوان saveorder ایجاد کردم :

 function saveorder($data)
    {
        self::sessioninit();
        $addresinfo = self::sessionget('addresid');
        $addresinfo = unserialize($addresinfo);
        $family = $addresinfo['family'];
        $ostan = $addresinfo['ostan_name'];
        $city = $addresinfo['city_name'];
        $mobile = $addresinfo['mobile'];
        $tel = $addresinfo['tel'];
        $codeposti = $addresinfo['codeposti'];
        $addres = $addresinfo['addres'];

        $basketinfo = $this->getbasket();
        $basket = $basketinfo[0];
        $basket = serialize($basket);
        $basketprice = $basketinfo[1];
        $basketdiscount = $basketinfo[2];

        $postprice = $this->calpostprice($addresinfo['city']);
        $posttype = self::sessionget('postid');

        if ($posttype == 1) {
            $postprice = $postprice['pish'];
        } else if ($posttype == 2) {
            $postprice = $postprice['sef'];
        }

        $code = $data['code'];
        $darsaddis = $this->checkcode($code);
        $darsadamount = ($darsaddis * $basketprice) / 100;
        $pricetotal = $basketprice - $basketdiscount + $postprice - $darsadamount;
        $pricetotal = ceil($pricetotal);

        $userid = self::sessionget('user');

        $paytype = $data['paytype'];

        $des = 'خرید از سایت قاسمی';
        $beforpay = '';

        if ($paytype == 1) {
            $payment = new Payment();

            $result = $payment->zarinpalrequest($pricetotal, $des, 'info@ghasemi.ir', $mobile);
            $status = $result['Status'];

            $Authority = $result['Authority'];
            $beforpay = $Authority;

        }

        $sql = "insert into tbl_order (family,ostan,city,code_posti,addres,tel,mobile,basket,amount,post_type,    post_price,userid,status,beforpay) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?)";
        $params = [$family, $ostan, $city, $codeposti, $addres, $tel, $mobile, $basket, $pricetotal, $posttype, $postprice, $userid, 1, $Authority];
       $this->doupdate($sql,$params);

        if ($paytype == 1) {
            if ($status == 100) {
                header('location: https://www.zarinpal.com/pg/StartPay/' . $Authority);
            } else {
                header('location:' . URL . 'showcart4/index/' . $status);
            }
        }
        if ($paytype == 4) {
            $sql = "select * from tbl_order order by id desc limit 1";
            $result = $this->doselct($sql,[],1);
            header('location:' . URL . 'checkout/index/' . $result['id']);
        }

    }

مشگل از لاین 53 تا 54 هست نمیدونم چرا
ساختار برنامه به صورت MVC هست


حسام قاسمی
@hesam64 2 سال پیش مطرح شد
0

دوستان مشگل از فیلد beforpay هست . وقتی که حذفش میکنم از کوئری برنامه درست کار میکنه و کوئری insert ‌انجام میشه . نمیدونم چرا . واقعا اگر کسی میتونی کمک کنه ممنونش میشم .
حتی فیلد beforpay را هم خالی تعریف کردم بازم کار نمیکنه .
کار با در گاه زرین پال هستش


برای ارسال پاسخ لازم است وارد شده یا ثبت‌نام کنید

ورود یا ثبت‌نام