شرح صفوف ومحتوى الفقرة
أوامر تعريف وهيكلة البيانات (DDL) مثل CREATE DATABASE وCREATE TABLE وALTER TABLE لا تُرجع صفوف نتائج، ولذلك تُنفذ مباشرة عبر الدالة $pdo->exec($sql).
- تنفذ
$pdo->exec($sql)أمر SQL واحداً لا يُرجع صفوفاً، وتُرجع الرقم0لأوامر الهيكلة (أوfalseعند الفشل). - لا تدمج مدخلات المستخدم أبداً داخل
$pdo->exec()؛ فأسماء الجداول والأعمدة في ملفات التهجير يجب أن تكون ثابتة في الكود المصدري. - أضف العبارة
IF NOT EXISTSفيCREATE TABLE IF NOT EXISTSلتتمكن من تشغيل سكريبت التهجير بأمان دون خطأ وجود الجدول مسبقاً.
تنفذ $pdo->exec($sql) أمر إنشاء جدول settings في الذاكرة وتُرجع 0 دلالةً على نجاح أمر الهيكلة.
PHP
<?php
$pdo = new PDO('sqlite::memory:');
$sql = 'CREATE TABLE IF NOT EXISTS settings (
key_name VARCHAR(64) PRIMARY KEY,
key_value TEXT NOT NULL
)';
$res = $pdo->exec($sql);
echo "DDL executed, return: $res\n";