PHP et PostgreSQL : un duo puissant pour le développement web

Formateur Python en ligne pour débutants

Apprenez Python facilement sans surcharge théorique. Résolvez des tâches pratiques avec vérification automatique et écrivez du code directement dans le navigateur.

Start Course

Pourquoi PHP et PostgreSQL sont un coup de foudre dès la première requête ?

\n\n

Le monde du développement web est plein de stéréotypes. L'un d'eux dit : « PHP ne s'entend bien qu'avec MySQL ». Il y a une part de vérité là-dedans, mais seulement jusqu'à ce que vous essayiez la combinaison PHP et PostgreSQL. C'est comme passer du vélo à une moto sportive : les mêmes roues, mais la vitesse, la maniabilité et la fiabilité sont complètement différentes.

\n\n

PostgreSQL n'est pas qu'une simple base de données. C'est un monstre objecto-relationnel qui sait gérer le JSON, les données géographiques, la recherche en texte intégral et les transactions les plus complexes. Et PHP est le chef d'orchestre idéal pour cet ensemble. Dans ce guide, nous allons tout détailler : de l'installation du pilote à l'écriture de code prêt pour la production. C'est parti !

\n\n

1. Installation et configuration : préparons les outils

\n\n

Avant d'écrire du code, assurons-nous que PHP connaît l'existence de PostgreSQL. Dans la plupart des distributions PHP modernes (par exemple, XAMPP, OpenServer, Docker), l'extension pdo_pgsql est déjà présente, mais elle doit être activée.

\n\n

1.1. Activer l'extension dans php.ini

\n\n

Ouvrez votre fichier php.ini et décommentez (supprimez le point-virgule au début) la ligne :

\n\n
extension=pdo_pgsql
\n\n

Si vous utilisez Linux, l'installation se fait ainsi :

\n\n
sudo apt-get install php-pgsql\nsudo service apache2 restart  # ou nginx + php-fpm
\n\n

1.2. Créer une base de données et un utilisateur

\n\n

Connectez-vous à la console PostgreSQL :

\n\n
sudo -u postgres psql
\n\n

Créons maintenant une base de données et un utilisateur pour notre projet :

\n\n
CREATE DATABASE pythonlib_blog;\nCREATE USER myapp WITH PASSWORD 'SuperSecret123';\nGRANT ALL PRIVILEGES ON DATABASE pythonlib_blog TO myapp;\n\\q
\n\n

Voilà. Nous avons maintenant une base pythonlib_blog et un utilisateur myapp.

\n\n

2. Première connexion : PDO comme standard

\n\n

N'utilisez jamais les anciennes fonctions pg_connect(). Dans le PHP moderne, il y a PDO (PHP Data Objects) — une interface unifiée pour travailler avec différentes bases de données. C'est plus sûr, plus pratique et cela prend en charge les requêtes préparées.

\n\n

2.1. Classe d'encapsulation pour la connexion

\n\n

Créons une classe simple Database qui gérera la connexion :

\n\n
<?php\n\nclass Database {\n    private static ?PDO $instance = null;\n    private const DB_HOST = 'localhost';\n    private const DB_PORT = 5432;\n    private const DB_NAME = 'pythonlib_blog';\n    private const DB_USER = 'myapp';\n    private const DB_PASS = 'SuperSecret123';\n\n    public static function getConnection(): PDO {\n        if (self::$instance === null) {\n            $dsn = "pgsql:host=" . self::DB_HOST . ";port=" . self::DB_PORT . ";dbname=" . self::DB_NAME;\n            try {\n                self::$instance = new PDO($dsn, self::DB_USER, self::DB_PASS, [\n                    PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,\n                    PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,\n                    PDO::ATTR_EMULATE_PREPARES => false,\n                ]);\n            } catch (PDOException $e) {\n                die("Connection failed: " . $e->getMessage());\n            }\n        }\n        return self::$instance;\n    }\n}
\n\n

Pourquoi est-ce génial ? Premièrement, le singleton — nous ne créons pas une nouvelle connexion à chaque requête. Deuxièmement, ATTR_EMULATE_PREPARES => false force PostgreSQL à utiliser de vraies requêtes préparées, et non une émulation côté PHP. Cela améliore les performances et la sécurité.

\n\n

3. Opérations CRUD : créer, lire, mettre à jour, supprimer

\n\n

Passons maintenant au cœur du sujet. Supposons que nous ayons une table articles pour les articles sur pythonlib.ru.

\n\n

3.1. Création de la table

\n\n

Exécutez ce SQL dans votre base de données (via psql ou l'interface d'administration) :

\n\n
CREATE TABLE articles (\n    id SERIAL PRIMARY KEY,\n    title VARCHAR(255)                

Blogs

Book Recommendations