مقدمة: لماذا PHP وقواعد البيانات قوة
\n\nأي موقع ويب أو تطبيق حديث ليس مجرد مجموعة من الصفحات، بل هو نظام ديناميكي يخزن ويعالج البيانات. PHP، باعتبارها واحدة من أشهر لغات تطوير الويب، توفر أدوات قوية للعمل مع قواعد البيانات. في هذه المقالة، سنشرح نظامين رئيسيين لإدارة قواعد البيانات (DBMS): نظام PostgreSQL العلائقي ونظام MongoDB الموجه للمستندات.
\n\nبالنسبة للمبتدئين، قد يبدو الاختيار بينهما صعبًا، لكن في الواقع كل منهما يحل مشاكله الخاصة. PostgreSQL هو معيار SQL موثوق للبيانات المنظمة، بينما MongoDB هو نظام NoSQL مرن للنمذجة السريعة والعمل مع المستندات الشبيهة بـ JSON. سنوضح كيفية الاتصال بكليهما من PHP، وإجراء العمليات الأساسية (CRUD)، وتقديم نصائح عملية.
\n\n1. إعداد البيئة: ما يجب تثبيته
\n\nقبل كتابة الكود، تأكد من تثبيت الإضافات الضرورية لـ PHP. للعمل مع PostgreSQL، تحتاج إلى الإضافة pdo_pgsql، ولـ MongoDB تحتاج إلى mongodb (عبر PECL أو composer).
تثبيت الإضافات
\n- \n
- PostgreSQL: قم بإلغاء تعليق السطر
extension=pdo_pgsqlفي ملف php.ini أو قم بالتثبيت عبر مدير الحزم (مثلsudo apt install php-pgsql). \n - MongoDB: استخدم Composer:
composer require mongodb/mongodb- سيقوم هذا بتثبيت المكتبة الرسمية. \n
بعد التثبيت، تحقق من أن الإضافات نشطة عن طريق تنفيذ php -m | grep -i pgsql و php -m | grep -i mongodb.
2. PostgreSQL و PHP: الموثوقية و SQL
\n\nPostgreSQL هو نظام إدارة قواعد بيانات علائقي قوي يدعم معاملات ACID والاستعلامات المعقدة وحقول JSON. للعمل معه في PHP، من الأفضل استخدام PDO (PHP Data Objects) - وهي واجهة عالمية.
\n\nالاتصال بـ PostgreSQL
\nأنشئ ملفًا باسم connect_pgsql.php:
<?php\n$host = 'localhost';\n$dbname = 'testdb';\n$user = 'postgres';\n$pass = 'password';\n\ntry {\n $pdo = new PDO("pgsql:host=$host;dbname=$dbname", $user, $pass);\n $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);\n echo "تم الاتصال بـ PostgreSQL بنجاح!";\n} catch (PDOException $e) {\n die("خطأ في الاتصال: " . $e->getMessage());\n}\n?>\n\nعمليات CRUD على مثال جدول users
\nلنقم بإنشاء جدول وتنفيذ استعلامات أساسية.
\n\nإنشاء الجدول
\n<?php\n$sql = "CREATE TABLE IF NOT EXISTS users (\n id SERIAL PRIMARY KEY,\n name VARCHAR(100) NOT NULL,\n email VARCHAR(150) UNIQUE NOT NULL,\n created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP\n)";\n$pdo->exec($sql);\necho "تم إنشاء الجدول.";\n?>\n\nإدراج البيانات (CREATE)
\n<?php\n$stmt = $pdo->prepare("INSERT INTO users (name, email) VALUES (:name, :email)");\n$stmt->execute(['name' => 'إيفان بيتروف', 'email' => 'ivan@example.com']);\necho "تمت إضافة المستخدم.";\n?>\n\nقراءة البيانات (READ)
\n<?php\n$stmt = $pdo->query("SELECT * FROM users");\nwhile ($row = $stmt->fetch(PDO::FETCH_ASSOC)) {\n echo "ID: {$row['id']}, الاسم: {$row['name']}, البريد الإلكتروني: {$row['email']}<br>";\n}\n?>\n\nالتحديث (UPDATE) والحذف (DELETE)
\n<?php\n// تحديث\n$stmt = $pdo->prepare("UPDATE users SET name = :name WHERE id = :id");\n$stmt->execute(['name' => 'بيوتر سيدوروف', 'id' => 1]);\n\n// حذف\n$stmt = $pdo->prepare("DELETE FROM users WHERE id = :id");\n$stmt->execute(['id' => 2]);\n?>\n\nنصيحة: استخدم دائمًا الاستعلامات المحضرة (prepare) للحماية من حقن SQL.
\n\n3. MongoDB و PHP: المرونة بدون مخطط
\n\nMongoDB يخزن البيانات في شكل مستندات BSON (JSON ثنائي).