سلام وقت بخیر - ببخشید در دوره php mvc در قسمت 14 (تایتی) که کدهای فایل model.php رو تکمیل میکردین من اصلا متوجه نشدم که روال کار به چه صورت هست.شما از سه متد exec - query - prepare استفاده کردین و گفتیم که اینهارو قبلا توی دوره php پیشرفته توضیح دادم خوب ما که دوره php پیشرفته رو ندیدیم نمیدونیم.
لطفا اگه ممکنه فقط کد زیر رو با جزئیات توضیح بدید ممنون ممنون میشم
protected function query($query , $values = null){
try {
if ($values == null) {
return $this->connection->query($query);
}
else {
$stmt = $this->connection->prepare($query);
$stmt->execute($values);
return $stmt;
}
}
catch (PDOException $e) {
echo "There is some problem in connection:" . $e->getMessage();
}
}
در قسمت if را از متد query بجای prepare استفاده کردین؟ تا جایی که من میدونم متدکوئری مشکل داره و prepare کامل تر هست
در قسمت else چرا $value رو execute کردین؟
لطفا کامل توضیح بدین اگه ممکنه دوتا نکته بالارو با جزئیات بیشتری توضیح بدید خیلی ممنون از لطفتون
با سلان خدمت شما همراه گرامی
ببینید من وقتی میگم در دوره پیشرفته گفتیم یعنی این موارد پیشنیاز دوره هست نه اینکه من چیز عجیبی در دورهپیشرفته گفتم نه
این مورد در مباحث pdo بخش prepare هست و اصلا ربطی به دوره خاصی نداره هر دوره ای استاندارد گفته باشن این موردو توضیح دادن
خببریم سراغ توضیح
ببینید من هر کوئری که میزنیم احتمال داره همراهش value داشته باشیم یا نداشته باشیم
مثلا select * from users
ما اینجا متغییری برای prepare کردن نداریم پس مستقیم query رو صدا میزنیم و تمام
اما بعضی از کوئری ها احتیاج به prepare کردن دارن مثلا select * from users where id = ?
اینجا باید حتما prepare بشه و بعد execute
شرطی که گذاشتیم دقیقا همین موردو چک میکنه
احسنت به شما
متوجه شدید کامل؟
بازم جایی ابهام داشتید حتما بفرمایید چون این موضوعاتو باید فول باشید و بعد پروژه اصلی رو شروع کنید هیچ ابهامی نذارید بمونه
ممنونم - فقط نمیدونم چرا توی قسمت else اومدین $value رو execute کردین - فکرمیکنم باید stmt$ رو execute میکردین نتونستم دلیلشو پیدا کنم ممنون میشم راهنماییم کنید
https://www.php.net/manual/en/pdostatement.execute.php
آرگمان ورودی متد رو ملاحظه بفرمایید
نوشته پارامتر ها
پارامتر ها همون value ها هستن
احسنت به شما