انتقل إلى محتوى الدرس

Inserting a Row with Named Placeholders إدراج سجل بمعاملات مسماة في PDO

أدرج السجلات المفردة والمتعددة في MySQL عبر الاستعلامات المحضرة، واسترجع المعرف التلقائي بـ lastInsertId وعالج القيم المكررة.
1 صفوف تعليمية
PHP
0 مشاهدة

شرح صفوف ومحتوى الفقرة

الصف 1 شرح توضيحي

أدرج دائماً البيانات القادمة من المستخدم عبر استعلام محضر بالمعاملات المسماة (:name و:email) وتمرير مصفوفة القيم إلى $stmt->execute([...]).

  • اذكر أسماء الأعمدة صراحةً في INSERT INTO table (col1, col2) VALUES (:col1, :col2) حتى لا تتأثر عملية الإدراج عند إضافة أعمدة جديدة للجدول.
  • في PHP 8، لا يشترط كتابة النقطتين في مفاتيح مصفوفة $stmt->execute()؛ فالمفتاح ["name" => "Ali"] يرتبط تلقائياً بالمعامل :name.
  • استدعِ $stmt->rowCount() بعد التنفيذ للتحقق من إدراج سجل واحد بنجاح.

يُحضَّر هيكل جملة SQL مرة واحدة عبر prepare()، وتُربط قيم المصفوفة الترابطية بأمان تام عبر execute().

مخطط توضيحي: محاكي إدراج السجلات وجلب lastInsertId والمعاملات في PDO
PHP
<?php
$pdo = new PDO('sqlite::memory:');
$pdo->exec('CREATE TABLE users (id INTEGER PRIMARY KEY, name TEXT, email TEXT)');
$stmt = $pdo->prepare('INSERT INTO users (name, email) VALUES (:name, :email)');
$stmt->execute([
    'name'  => 'Maha Al-Harbi',
    'email' => '[email protected]',
]);
echo "Inserted rows: " . $stmt->rowCount() . "\n";