العمل مع قواعد البيانات في PHP: PostgreSQL و MongoDB
نادراً ما يخلو تطوير الويب الحديث في PHP من التفاعل مع قواعد البيانات. يعتمد الاختيار بين النظام العلائقي (PostgreSQL) والنظام الموجه للمستندات (MongoDB) على بنية البيانات ومتطلبات الأداء وقابلية التوسع للمشروع. في هذه المقالة، سنغطي كيفية الاتصال بكلا نظامي إدارة قواعد البيانات (DBMS)، وإجراء العمليات الأساسية، وما يجب الانتباه إليه عند الاختيار.
1. الاتصال بـ PostgreSQL عبر PDO
PostgreSQL هو نظام إدارة قواعد بيانات علائقي قوي يدعم معاملات ACID والاستعلامات المعقدة وأنواع البيانات القابلة للتوسع. في PHP، يُوصى باستخدام إضافة PDO (كائنات بيانات PHP) للعمل معه، والتي توفر واجهة موحدة لقواعد البيانات المختلفة.
أولاً، تأكد من تثبيت برامج تشغيل pdo_pgsql و pgsql في نظامك. يمكنك التحقق من ذلك عبر phpinfo().
مثال على الاتصال وإدراج البيانات
<?php$host = 'localhost';$dbname = 'my_database';$user = 'my_user';$password = 'my_password';
try { // إنشاء DSN (اسم مصدر البيانات) $dsn = "pgsql:host=$host;dbname=$dbname"; // الاتصال $pdo = new PDO($dsn, $user, $password, [ PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION, PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC ]); echo "تم الاتصال بـ PostgreSQL بنجاح!<br>"; // إدراج البيانات باستخدام العبارات المحضرة $sql = "INSERT INTO users (name, email, age) VALUES (:name, :email, :age)"; $stmt = $pdo->prepare($sql); $stmt->execute([ ':name' => 'Ivan Petrov', ':email' => 'ivan@example.com', ':age' => 28 ]); echo "تمت إضافة المستخدم. المعرف: " . $pdo->lastInsertId(); } catch (PDOException $e) { echo "خطأ في الاتصال: " . $e->getMessage(); die();}?>استخدام العبارات المحضرة يحمي من حقن SQL ويحسن الأداء للاستعلامات المتكررة المماثلة.
استرجاع البيانات مع التصفية
<?php$minAge = 25;$search = "SELECT id, name, email, age FROM users WHERE age > :minAge ORDER BY age DESC";$stmt = $pdo->prepare($search);$stmt->execute([':minAge' => $minAge]);
$users = $stmt->fetchAll();
foreach ($users as $user) { echo "{$user['name']} ({$user['age']} سنة) - {$user['email']}<br>";}?>يدعم PostgreSQL عمليات JOIN المعقدة والاستعلامات الفرعية ودوال النوافذ والبحث النصي الكامل — مما يجعله خياراً مثالياً للمشاريع ذات متطلبات سلامة البيانات الصارمة.
2. الاتصال بـ MongoDB عبر المشغل الرسمي
MongoDB هي قاعدة بيانات NoSQL تخزن البيانات في شكل مستندات (كائنات BSON شبيهة بـ JSON). وهي مناسبة تماماً للمشاريع ذات المخططات المرنة والنماذج الأولية السريعة والتوسع الأفقي.
للعمل مع MongoDB في PHP، يتم استخدام إضافة mongodb ومكتبة mongodb/mongodb (التي يتم تثبيتها عبر Composer).
تثبيت المشغل
# عبر Composer في جذر المشروعcomposer require mongodb/mongodbمثال على الاتصال وإدراج مستند
<?phprequire_once 'vendor/autoload.php';
use MongoDB\\Client;use MongoDB\\Driver\\Exception\\Exception;
try { // الاتصال بالخادم المحلي $client = new Client("mongodb://localhost:27017"); // تحديد قاعدة البيانات والمجموعة $collection = $client->my_database->users; // إدراج مستند واحد $insertResult = $collection->insertOne([ 'name' => 'Anna Smirnova', 'email' => 'anna@example.com', 'age' => 32, 'interests' => ['programming', 'reading', 'traveling'],