Pour tirer le meilleur parti de votre base de données MySQL, il est important de comprendre comment se connecter de votre programme PHP personnalisé à la base de données MySQL.
Ce didacticiel explique les trois méthodes suivantes ainsi qu'un exemple de programme PHP approprié, qui expliquera comment se connecter de votre base de données PHP à MySQL.
- Se connecter à l'aide de l'extension mysqli (recommandé)
- Se connecter à l'aide de PDO (recommandé)
- Se connecter à l'aide des anciennes fonctions mysql_ traditionnelles (obsolète)
Pour cela, vous devez installer le package php-mysql.
Sur une distribution basée sur RedHat, y compris CentOS, utilisez yum pour installer php-mysql comme indiqué ci-dessous.
yum install php-mysql
Selon votre système, ce qui précède installera ou mettra à jour les dépendances suivantes :
php
php-cli
php-common
php-pdo
php-pgsql
Une fois installé, la page phpinfo affichera le module mysql comme indiqué ci-dessous :
Pour tous les exemples ci-dessous, nous allons nous connecter à une base de données MySQL qui existe déjà. Si vous débutez avec MySQL, voici un bon point de départ :MySQL Beginners Guide
Remarque :Tout ce qui est expliqué ici fonctionnera également avec MariaDB, car c'est la même chose que MySQL.
1. Se connecter à partir de PHP à l'aide de l'extension mysqli
mysqli signifie MySQL amélioré.
Veuillez noter que sur la plupart des distributions (par exemple :CentOS), php-mysqli fait déjà partie du package php-mysql. Ainsi, vous n'avez pas besoin de rechercher et de rechercher le package php-mysqli. Tout ce que vous avez à faire est d'installer le package php-mysql pour que l'extension mysqli fonctionne sur votre système.
Créez le fichier mysqli.php suivant sous Apache DocumentRoot :
<?php $conn = new mysqli("localhost", "root", "mySecretDBpass", "thegeekstuff"); if ($conn->connect_error) { die("ERROR: Unable to connect: " . $conn->connect_error); } echo 'Connected to the database.<br>'; $result = $conn->query("SELECT name FROM employee"); echo "Number of rows: $result->num_rows"; $result->close(); $conn->close(); ?>
Dans ce qui précède :
- mysqli - Cette fonction initiera une nouvelle connexion en utilisant l'extension mysqli. Cette fonction prendra ces quatre arguments
- nom d'hôte sur lequel la base de données MySQL est en cours d'exécution
- Nom d'utilisateur MySQL pour se connecter
- Mot de passe pour l'utilisateur mysql
- Base de données MySQL à connecter.
- fonction de requête – Utilisez-la pour spécifier votre requête MySQL. Dans cet exemple, nous sélectionnons la colonne de nom de la base de données des employés.
- Enfin, nous affichons le nombre de lignes sélectionnées à l'aide de la variable num_rows dans le résultat. Nous fermons également les variables de résultat et de connexion, comme indiqué ci-dessus.
Lorsque vous appelez mysqli.php ci-dessus depuis votre navigateur, vous verrez la sortie suivante, qui indique que PHP a pu se connecter à la base de données MySQL et récupérer des données.
Connected to the database. Number of rows: 6
Remarque :Si vous essayez de vous connecter à une base de données MySQL distante, vous devrez peut-être le faire pour éviter le message d'erreur de l'hôte non autorisé :Comment autoriser le client MySQL à se connecter au serveur MySQL distant
2. Se connecter à partir de l'extension PHP MySQL PDO
PDO signifie PHP Data Objects.
Le lecteur PDO_MYSQL implémente l'interface PDO fournie par PHP pour se connecter de votre programme PHP à la base de données MySQL.
Sur la plupart des distributions Linux (par exemple :CentOS et RedHat), le package php-pdo fait déjà partie du package php-mysql. Ainsi, vous n'avez pas besoin de rechercher et de rechercher le package php-pdo. Tout ce que vous avez à faire est d'installer le package php-mysql pour que l'extension PHP PDO_MYSQL fonctionne sur votre système.
Créez le fichier mysql-pdo.php suivant sous votre Apache DocumentRoot :
<?php try { $conn = new PDO("mysql:host=localhost;dbname=thegeekstuff", "root", "mySecretDBpass"); $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); echo 'Connected to the database.<br>'; $sql = 'SELECT name FROM employee'; print "Employee Name:<br>"; foreach ($conn->query($sql) as $row) { print $row['name'] . "<br>"; } $conn = null; } catch(PDOException $err) { echo "ERROR: Unable to connect: " . $err->getMessage(); } ?>
Dans ce qui précède :
- new PDO – Cela créera un nouvel objet PDO qui prendra les trois arguments suivants :
- chaîne de connexion mysql :ce sera au format "mysql:host=$hostname;dbname=$dbname". Dans l'exemple ci-dessus, la base de données s'exécute sur localhost et nous nous connectons à la base de données geekstuff.
- Nom d'utilisateur MySQL pour se connecter
- Mot de passe pour l'utilisateur mysql
- Variable $sql – Créez la requête sql que vous souhaitez exécuter. Dans cet exemple, nous sélectionnons la colonne de nom dans la table des employés.
- query($sql) – Ici, nous exécutons la requête sql que nous venons de créer.
- foreach - Ici, nous parcourons la sortie de la commande de requête ci-dessus et la stockons dans la variable $row, puis nous l'affichons à l'aide de la commande print.
- Dans MySQL PDO, pour fermer la connexion, définissez simplement la variable $conn sur une valeur nulle.
Lorsque vous appelez mysqli.php ci-dessus depuis votre navigateur, vous verrez la sortie suivante, qui indique que PHP a pu se connecter à la base de données MySQL et récupérer des données.
Connected to the database. Employee Name: Thomas Jason Mayla Nisha Randy Ritu
3. Se connecter à partir de PHP à l'aide des anciennes fonctions mysql_ (obsolète)
N'utilisez cette méthode que si vous utilisez une ancienne version de PHP et que vous ne pouvez pas la mettre à niveau vers la nouvelle version pour une raison quelconque.
Il est recommandé d'utiliser la méthode n ° 2 et la méthode n ° 3 indiquées ci-dessus au lieu de cette méthode. J'ai inclus cette méthode uniquement à titre de référence, et non comme une recommandation à utiliser.
Cette extension particulière a été dépréciée à partir de la version PHP 5.5. Mais à partir de la version PHP 7.0, cela ne fonctionnera même pas, car il a été supprimé.
À partir de la version PHP 5.5, lorsque vous utilisez ces fonctions, cela génère une erreur E_DEPRECATED.
Créez le fichier mysql-legacy.php suivant sous Apache DocumentRoot :
<?php $conn = mysql_connect('localhost', 'root', 'mySecretDBpass'); mysql_select_db("thegeekstuff"); if (!$conn) { die('ERROR: Unable to connect: ' . mysql_error()); } echo 'Connected to the database.<br>'; $result = mysql_query('SELECT name FROM employee'); $row = mysql_fetch_row($result); echo "Employee 1: ", $row[0], "<br>\n"; mysql_close($conn); ?>
Dans ce qui précède :
- la fonction mysql_connect prend trois arguments :1) le nom d'hôte sur lequel la base de données MySQL est exécutée 2) le nom d'utilisateur MySQL pour se connecter 3) le mot de passe de l'utilisateur mysql. Ici, il se connecte à la base de données MySQL qui s'exécute sur le serveur local en utilisant le nom d'utilisateur root et son mot de passe.
- Fonction mysql_select_db - Comme son nom l'indique, cela sélectionnera la base de données à laquelle vous souhaitez vous connecter. C'est l'équivalent de la commande "use". Dans cet exemple, nous nous connectons à la base de données thegeekstuff.
- Fonction mysql_query – Utilisez-la pour spécifier votre requête MySQL. Dans cet exemple, nous sélectionnons la colonne de nom de la base de données des employés.
- mysql_fetch_row - Utilisez cette fonction pour récupérer les lignes de la requête SQL que nous venons de créer.
- Fermez enfin la connexion à l'aide de la commande mysql_close comme indiqué ci-dessus.
Lorsque vous appelez mysql-legacy.php ci-dessus depuis votre navigateur, vous verrez la sortie suivante, qui indique que PHP a pu se connecter à la base de données MySQL et récupérer des données.
Connected to the database. Employee 1: Thomas