بعد از این درس دقیقاً چه بلدی؟
- میتوانی «اتصال PDO» را با مثال همین درس توضیح بدهی.
- میدانی «prepare» کجای مسئله به کار میآید.
- تغییر پیشنهادی درس را اجرا میکنی و از روی نتیجه، اشتباه را پیدا میکنی.
فرم بانکی با خانههای ثابت
ساختار فرم از قبل چاپ شده و مشتری فقط مقدار هر خانه را مینویسد. Prepared statement هم ساختار SQL را ثابت نگه میدارد و داده را جدا وارد میکند.
PDO راه یکسان و قابلکنترلی برای ارتباط PHP با پایگاه داده میدهد. مهمترین عادت این درس جدا نگهداشتن متن SQL از مقدارهایی است که کاربر فرستاده.
چرا مهم است؟ ایمیل از فرم میآید. آن را مستقیم به SQL نمیچسبانیم؛ Query را آماده میکنیم و مقدار را جدا میفرستیم.
اولین تمرین تو: ایمیل از فرم میآید. آن را مستقیم به SQL نمیچسبانیم؛ Query را آماده میکنیم و مقدار را جدا میفرستیم.
اول بفهم، بعد کد بنویس
اتصال PDO
با DSN و تنظیم حالت Exception یک ارتباط قابل مدیریت میسازیم.
prepare
دستور SQL را با جاینگهدارهایی مثل :email آماده میکند.
execute
مقدارها را جداگانه به جاینگهدارها میدهد و جلوی تغییر ساختار Query را میگیرد.
پیداکردن کاربر با ایمیل
ایمیل از فرم میآید. آن را مستقیم به SQL نمیچسبانیم؛ Query را آماده میکنیم و مقدار را جدا میفرستیم.
قطعهها را به ترتیب درست بچین
روی هر قطعه بزن تا وارد پاسخ شود؛ برای برگرداندن دوباره روی آن بزن. با دکمههای جابهجایی هم میتوانی بدون کشیدن و رهاکردن ترتیب را اصلاح کنی.
کد را کامل کن و ساختار آن را بررسی کن
این درس وارد قابلیتهای سروری یا حرفهای شده است. برای امنیت سایت، کد دلخواه روی سرور اجرا نمیشود؛ بررسیگر، وجود اجزای ضروری و منطق مورد انتظار را کنترل میکند و راهنمای اصلاح میدهد.
کد را کامل کن و «بررسی ساختار» را بزن.
این مثال خطبهخط چه میگوید؟
فعلاً حفظ نکن؛ هر خط را به یک جمله ساده تبدیل کن.
- 1
<?phpاز اینجا مفسر PHP شروع به خواندن کد میکند.
- 2
$stmt = $pdo->prepare(یک مقدار با نام $stmt نگهداری میشود تا در خطهای بعد دوباره استفاده شود.
- 3
"SELECT id, name FROM users WHERE email = :email"این خط بخشی از منطق اصلی مثال است؛ نامها و علامتها را از راست به چپ، بخشبهبخش بخوان.
- 4
);مرز یک بلوک یا فراخوانی در اینجا باز یا بسته میشود.
- 5
$stmt->execute(["email" => $email]);این خط بخشی از منطق اصلی مثال است؛ نامها و علامتها را از راست به چپ، بخشبهبخش بخوان.
- 6
$user = $stmt->fetch(PDO::FETCH_ASSOC);یک مقدار با نام $user نگهداری میشود تا در خطهای بعد دوباره استفاده شود.
راهنماییها مرحلهای هستند؛ اول خودت پیام خطا را بخوان.
جاینگهدار :email را در یکی از دو محل عمداً :mail کن و خطای اجرای Query را بررسی کن.
از ساده به چالشی، بدون پرش
یکی از مقدارهای مثال را عوض کن، خروجی را روی کاغذ حدس بزن و سپس بررسی کن.
جاینگهدار :email را در یکی از دو محل عمداً :mail کن و خطای اجرای Query را بررسی کن.
سناریوی «پیداکردن کاربر با ایمیل» را با نامهای واضحتر و یک حالت تازه گسترش بده.
این سه اشتباه را انجام نده
ورودی را با نقطه به رشته SQL میچسبانی.
رمز دیتابیس را داخل مخزن عمومی میگذاری.
پیام کامل خطای دیتابیس را در سایت اصلی به کاربر نشان میدهی.
5 پرسش کوتاه؛ مطمئن شو واقعاً یاد گرفتهای
برای هر پرسش یک پاسخ انتخاب کن. بعد از هر انتخاب، دلیل پاسخ را همانجا میبینی.
کدام روش ورودی را از ساختار SQL جدا میکند؟
کدام توضیح، «اتصال PDO» را دقیقتر بیان میکند؟
بهترین قدم بعد از خواندن مثال این درس چیست؟
کدام روش نشان میدهد این درس را واقعاً فهمیدهای؟
کدام رفتار احتمال خطا را در همین موضوع بیشتر میکند؟
درس را فقط وقتی تمام کن که کد را تغییر دادهای
دیدن آموزش کافی نیست؛ یک مقدار را تغییر بده، خروجی را پیشبینی کن و بعد اجرا بزن.