باسلام
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
ممنون میشم راهنمایی کنید
با سلام تو فایل 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 هست
دوستان مشگل از فیلد beforpay هست . وقتی که حذفش میکنم از کوئری برنامه درست کار میکنه و کوئری insert انجام میشه . نمیدونم چرا . واقعا اگر کسی میتونی کمک کنه ممنونش میشم .
حتی فیلد beforpay را هم خالی تعریف کردم بازم کار نمیکنه .
کار با در گاه زرین پال هستش
آیا مایل به ارسال نوتیفیکیشن و اخبار از طرف راکت هستید ؟