شرح صفوف ومحتوى الفقرة
اختيار نوع عمود SQL المناسب يضمن كفاءة التخزين على القرص ومطابقة الأنواع بدقة عند جلب الصفوف إلى PHP 8.4.
- عطّل المحاكاة (
PDO::ATTR_EMULATE_PREPARES => false) لكي تُرجع قاعدة البيانات أعمدة الأعداد الصحيحة كنوعintحقيقي في PHP. - انتبه إلى أن أعمدة
DECIMAL(10, 2)تُرجع عمداً كنصstring(مثل"249.50") للحفاظ على الدقة العشرية المالية دون فقدان. - لا تنفذ أوامر الهيكلة بمدخلات الزوار أبداً؛ بل شغّل ملفات التهجير عبر سطر الأوامر (CLI).
مع تفعيل الأنواع الأصلية، يعود عمود INTEGER مباشرة كعدد صحيح integer داخل PHP.
| نوع عمود SQL | أفضل استخدام | نوع القيمة في PHP | نصيحة التصميم |
|---|---|---|---|
BIGINT UNSIGNED | Primary & Foreign Key IDs | int (on 64-bit PHP) | Match signedness on FKs |
VARCHAR(190) / TEXT | Emails, slugs / Article body | string | Add UNIQUE on emails/slugs |
DECIMAL(10, 2) | Money, prices, tax rates | string (exact precision) | Never use FLOAT for money |
TINYINT(1) / TIMESTAMP | Boolean flags / Audit times | int (0/1) / string | Use DEFAULT CURRENT_TIMESTAMP |
PHP
<?php
$pdo = new PDO('sqlite::memory:');
$pdo->exec('CREATE TABLE metrics (id INTEGER PRIMARY KEY, hits INTEGER NOT NULL)');
$pdo->exec('INSERT INTO metrics (hits) VALUES (42)');
$row = $pdo->query('SELECT id, hits FROM metrics')->fetch(PDO::FETCH_ASSOC);
echo gettype($row['hits']) . ":" . $row['hits'] . "\n";
خلاصة المعرفة ومحطة الانتقال
ملخص الدرس
حصاد الدرسمراجعة مركّزة لأهم المفاهيم والقواعد الهندسية التي أتقنتها في هذا الدرس قبل التطبيق العملي
ماذا تعلّمت في هذا الدرس؟
اختيار نوع عمود SQL المناسب يضمن كفاءة التخزين على القرص ومطابقة الأنواع بدقة عند جلب الصفوف إلى PHP 8.4. عطّل المحاكاة (PDO::ATTR_EMULATE_PREPARES => false) لكي تُرجع قاعدة البيانات أعمدة الأعداد الصحيحة كنوع int حقيقي في PHP. انتبه إلى أن أعمدة DECIMAL(10, 2) تُرجع عمداً كنص string (مثل "249.50") للحفاظ على الدقة العشرية المالية دون فقدان. لا تنفذ أوامر الهيكلة بمدخلات الزوار أبداً؛ بل شغّل ملفات التهجير عبر سطر الأوامر (CLI).