العمل مع قواعد البيانات في PHP: PostgreSQL وMongoDB عملياً

مدرب بايثون أونلاين للمبتدئين

تعلم Python بسهولة دون إرهاق نظري. حل مهام عملية مع التحقق التلقائي واكتب الكود مباشرة في المتصفح.

ابدأ الدورة

العمل مع قواعد البيانات في 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']);


مقارنة النهجين: متى تختار PostgreSQL ومتى تختار MongoDB

المدونات

توصيات الكتب