PHP و PostgreSQL: دليل شامل لمطوري الويب

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

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

ابدأ الدورة

PHP و PostgreSQL: لماذا هذه الثنائية هي سلاحك السري

\n\n

تخيل أنك تبني تطبيق ويب يجب أن يتحمل مئات الآلاف من الطلبات، ولا يفقد البيانات عند الأعطال، ويظل مرنًا في نفس الوقت. PHP و PostgreSQL ليست مجرد تركيبة عادية، بل هي خيار معماري يفصل المحترفين عن الهواة. بينما يركض الجميع وراء الأطر البرمجية الرائجة، يعرف المطورون الأذكياء أن القوة الحقيقية تكمن في الربط الصحيح بين لغة البرمجة وقاعدة البيانات.

\n\n

PostgreSQL ليست مجرد "قاعدة بيانات أخرى". إنها نظام إدارة قواعد بيانات كائني-علائقي يدعم JSONB، والبحث النصي الكامل، والبيانات الجغرافية، والمعاملات بمستوى ACID. أما PHP بمرونتها ومجتمعها الضخم فتسمح لك باستخراج أقصى استفادة من PostgreSQL. في هذا الدليل، سأريك ليس فقط "كيف تتصل"، بل كيف تبني تطبيقات موثوقة وسريعة وقابلة للتوسع.

\n\n

1. إعداد البيئة: من أين تبدأ

\n\n

تثبيت إضافة PostgreSQL في PHP

\n\n

أول ما عليك فعله هو التأكد من وجود مشغل PostgreSQL في PHP. عادةً ما يكون هناك إضافتان: pdo_pgsql (لـ PDO) و pgsql (للدوال الأصلية). على Ubuntu/Debian، يكون التثبيت كالتالي:

\n\n
sudo apt-get install php-pgsql php-pdo\nsudo service apache2 restart
\n\n

على macOS عبر Homebrew:

\n\n
brew install php@8.1\npecl install pdo_pgsql
\n\n

يمكنك التحقق من تفعيل الإضافة عبر phpinfo() أو بالأمر:

\n\n
php -m | grep pgsql
\n\n

هام: استخدم PDO (PHP Data Objects) — فهي واجهة موحدة للتعامل مع قواعد البيانات المختلفة. إذا قررت غدًا الانتقال من PostgreSQL إلى MySQL، فلن تضطر لإعادة كتابة كل الكود. PDO هي معيار الأمان والمرونة.

\n\n

إنشاء قاعدة البيانات والمستخدم

\n\n

ادخل إلى PostgreSQL وأنشئ بيئة اختبار:

\n\n
sudo -u postgres psql\n\nCREATE DATABASE pythonlib_db;\nCREATE USER pythonlib_user WITH PASSWORD 'secure_password_123';\nGRANT ALL PRIVILEGES ON DATABASE pythonlib_db TO pythonlib_user;\n\\q
\n\n

تم الآن. لديك قاعدة بيانات pythonlib_db ومستخدم بصلاحيات. لا تستخدم مستخدم postgres أبدًا في بيئة الإنتاج — فهذا خطر.

\n\n

2. الاتصال بـ PostgreSQL من PHP: 3 طرق

\n\n

الطريقة 1: PDO (موصى بها)

\n\n

PDO هي طريقة حديثة وآمنة ومرنة. إليك مثال بسيط للاتصال:

\n\n
<?php\n$host = 'localhost';\n$dbname = 'pythonlib_db';\n$user = 'pythonlib_user';\n$pass = 'secure_password_123';\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

لاحظ ERRMODE_EXCEPTION — هذا يفعل وضع الاستثناءات. بدونه ستظل تتساءل لماذا لا يعمل الاستعلام.

\n\n

الطريقة 2: الدوال الأصلية pg_*

\n\n

الطريقة التقليدية التي لا تزال مستخدمة في المشاريع القديمة:

\n\n
$conn = pg_connect("host=localhost dbname=pythonlib_db user=pythonlib_user password=secure_password_123");\nif (!$conn) {\n    die("خطأ في الاتصال: " . pg_last_error());\n}\necho "تم الاتصال عبر pg_connect";
\n\n

العيب: لا توجد واجهة موحدة. إذا انتقلت إلى MySQL، ستحتاج لإعادة كتابة الكود.

\n\n

الطريقة 3: عبر مقبس Unix (للتطوير المحلي)

\n\n

إذا كان PostgreSQL مثبتًا محليًا، يمكنك الاتصال بدون كلمة مرور عبر المقبس:

\n\n
$pdo = new PDO("pgsql:host=/var/run/postgresql;dbname=pythonlib_db", 'postgres');\n
\n\n

هذه طريقة سريعة، لكنها غير مناسبة للإنتاج.

\n\n

3. العمليات الأساسية: SELECT, INSERT, UPDATE, DELETE

\n\n

استعلامات آمنة باستخدام العبارات المحضرة

\n\n

انسَ

المدونات

توصيات الكتب