العمل مع قواعد البيانات في PHP: PostgreSQL وMongoDB عملياً
نادراً ما يخلو تطوير الويب الحديث باستخدام PHP من التفاعل مع قواعد البيانات. حلان شائعان — قاعدة البيانات العلائقية PostgreSQL وقاعدة البيانات الموجهة للمستندات MongoDB — يوفران للمطورين أدوات مرنة لتخزين ومعالجة البيانات. في هذه المقالة، سنشرح كيفية الاتصال بكل من أنظمة إدارة قواعد البيانات هذه، وتنفيذ عمليات CRUD الأساسية، وتجنب الأخطاء النموذجية. جميع أمثلة الكود مكتوبة بلغة PHP وجاهزة للاستخدام.
الاتصال بـ PostgreSQL عبر PDO
للعمل مع PostgreSQL في PHP، يُوصى باستخدام الامتداد PDO (PHP Data Objects). فهو يوفر واجهة موحدة لأنظمة إدارة قواعد البيانات المختلفة ويحمي من هجمات SQL injection عبر العبارات المُعدّة مسبقاً.
قم بتثبيت مشغل pdo_pgsql إذا لم يكن مفعّلاً بعد. يمكنك التحقق من ذلك عبر phpinfo() أو بالأمر:
php -m | grep pdo_pgsqlمثال على الاتصال بقاعدة بيانات محلية:
<?php$host = 'localhost';$dbname = 'my_database';$user = 'postgres';$pass = 'secret';
try { $dsn = "pgsql:host=$host;dbname=$dbname"; $pdo = new PDO($dsn, $user, $pass, [ PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION, PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC ]); echo "تم الاتصال بـ PostgreSQL بنجاح!";} catch (PDOException $e) { die("خطأ في الاتصال: " . $e->getMessage());}بعد الاتصال، سنقوم بإجراء استعلام بسيط لجلب البيانات. لننشئ جدول users وندرج بعض السجلات:
<?php// إنشاء الجدول$pdo->exec("CREATE TABLE IF NOT EXISTS users ( id SERIAL PRIMARY KEY, name VARCHAR(100) NOT NULL, email VARCHAR(255) UNIQUE NOT NULL, created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP)");
// إدراج البيانات عبر عبارة مُعدّة مسبقاً$stmt = $pdo->prepare("INSERT INTO users (name, email) VALUES (:name, :email)");$stmt->execute([':name' => 'إيفان بيتروف', ':email' => 'ivan@example.com']);echo "تمت إضافة المستخدم، المعرف: " . $pdo->lastInsertId();
// جلب جميع المستخدمين$users = $pdo->query("SELECT * FROM users")->fetchAll();foreach ($users as $user) { echo "{$user['name']} - {$user['email']}<br>";}العمل مع MongoDB عبر المشغل الرسمي
MongoDB هي قاعدة بيانات NoSQL تخزن البيانات بتنسيق BSON (JSON ثنائي). يوجد لـ PHP مشغل رسمي mongodb يتم تثبيته عبر Composer مع المكتبة mongodb/mongodb.
التثبيت:
composer require mongodb/mongodbالاتصال بـ MongoDB واختيار قاعدة البيانات:
<?phprequire 'vendor/autoload.php';
use MongoDB\\Client;
$uri = 'mongodb://localhost:27017';$client = new Client($uri);$collection = $client->my_database->users; // قاعدة البيانات my_database، المجموعة users
echo "تم الاتصال بـ MongoDB";الآن سنقوم بتنفيذ عمليات CRUD. في MongoDB، يتم تمثيل البيانات كمصفوفات ترابطية:
<?php// إدراج مستند$insertResult = $collection->insertOne([ 'name' => 'آنا سميرنوفا', 'email' => 'anna@example.com', 'age' => 28, 'tags' => ['php', 'mongodb']]);echo "معرف المستند الجديد: " . $insertResult->getInsertedId();
// البحث حسب الحقل$user = $collection->findOne(['email' => 'anna@example.com']);echo "الاسم: " . $user['name'];
// التحديث: إضافة حقل "status"$collection->updateOne( ['email' => 'anna@example.com'], ['$set' => ['status' => 'active']]);
// الحذف$collection->deleteOne(['email' => 'anna@example.com']);