PHP MySQLFonctions : mysqli_query et mysqli_connect
โก Rรฉsumรฉ intelligent
MySQLPHP, ainsi que d'autres mรฉthodes d'accรจs aux bases de donnรฉes, permet ร un script PHP de se connecter ร une base de donnรฉes, d'exรฉcuter des requรชtes et d'en lire les rรฉsultats. Ce guide aborde les fonctions principales de mysqli, des exemples complets d'opรฉrations CRUD, les requรชtes prรฉparรฉes pour la sรฉcuritรฉ, ainsi que les mรฉthodes d'accรจs alternatives PDO et ODBC.

PHP possรจde une riche collection de fonctions intรฉgrรฉes pour manipuler MySQL bases de donnรฉes.
Fonction PHP mysqli_connect
La fonction PHP mysqli_connect est utilisรฉe pour se connecter ร une base de donnรฉes. MySQL serveur de base de donnรฉes.
Il a la syntaxe suivante.
<?php $db_handle = mysqli_connect($db_server_name, $db_user_name, $db_password); ?>
ICI,
- ยซ $db_handle ยป est la variable de ressource de connexion ร la base de donnรฉes.
- ยซ mysqli_connect(โฆ) ยป est la fonction permettant la connexion ร la base de donnรฉes PHP.
- ยซ $db_server_name ยป est le nom ou l'adresse IP du serveur hรฉbergeant la base de donnรฉes. MySQL serveur.
- ยซ $db_user_name ยป est un nom d'utilisateur valide dans la base de donnรฉes. MySQL serveur.
- ยซ $db_password ยป est un mot de passe valide associรฉ ร un nom d'utilisateur dans la base de donnรฉes. MySQL serveur.
Fonction PHP mysqli_select_db
La fonction mysqli_select_db permet de sรฉlectionner une base de donnรฉes.
Il a la syntaxe suivante.
<?php mysqli_select_db($db_handle, $database_name); ?>
ICI,
- ยซ mysqli_select_db(โฆ) ยป est la fonction de sรฉlection de base de donnรฉes qui renvoie vrai ou faux
- ยซ $db_handle ยป est le lien de connexion au serveur
- "$database_name" est le nom de la base de donnรฉes
Fonction PHP mysqli_query
La fonction mysqli_query est utilisรฉe pour exรฉcuter SQL requรชtes.
Cette fonction peut รชtre utilisรฉe pour exรฉcuter les types de requรชtes suivants :
- insรฉrer
- Sรฉlectionner
- Mises ร jour
- Supprimer
Il a la syntaxe suivante.
<?php mysqli_query($db_handle, $query); ?>
ICI,
- ยซ mysqli_query(โฆ) ยป est la fonction qui exรฉcute les requรชtes SQL.
- ยซ $db_handle ยป est le lien de connexion au serveur
- ยซ $query ยป est la requรชte SQL ร exรฉcuter
Fonction PHP mysqli_num_rows
La fonction mysqli_num_rows est utilisรฉe pour obtenir le nombre de lignes renvoyรฉes par une requรชte de sรฉlection.
Il a la syntaxe suivante.
<?php mysqli_num_rows($result); ?>
ICI,
- ยซ mysqli_num_rows(โฆ) ยป est la fonction de comptage de lignes
- "$result" est le jeu de rรฉsultats mysqli_query
Fonction PHP mysqli_fetch_array
La fonction mysqli_fetch_array est utilisรฉe pour extraire des tableaux de lignes ร partir d'un ensemble de rรฉsultats de requรชte.
Il a la syntaxe suivante.
<?php mysqli_fetch_array($result); ?>
ICI,
- "mysqli_fetch_array(โฆ)" est la fonction permettant de rรฉcupรฉrer des tableaux de lignes
- ยซ $result ยป est le rรฉsultat renvoyรฉ par la fonction mysqli_query.
Fonction PHP mysqli_close
La fonction mysqli_close est utilisรฉe pour fermer une connexion ร une base de donnรฉes ouverte.
Il a la syntaxe suivante.
<?php mysqli_close($db_handle); ?>
ICI,
- ยซ mysqli_close(โฆ) ยป est la fonction PHP qui ferme la connexion.
- ยซ $db_handle ยป est la ressource de connexion au serveur
PHP MySQL Exemples CRUD
Examinons des exemples pratiques qui tirent parti de ces fonctions. Ce tutoriel suppose la connaissance de MySQL et SQL ; si ces termes vous sont inconnus, veuillez consulter notre documentation. MySQL et des didacticiels SQL.
Nous allons crรฉer une base de donnรฉes simple appelรฉe my_personal_contacts avec une seule table. Connectez-vous ร MySQL en utilisant votre outil d'accรจs prรฉfรฉrรฉ tel que MySQL Dans Workbench ou phpMyAdmin, crรฉez une base de donnรฉes nommรฉe my_personal_contacts, puis exรฉcutez le script ci-dessous pour crรฉer la table et y insรฉrer des donnรฉes fictives.
CREATE TABLE IF NOT EXISTS `my_contacts` ( `id` int(11) NOT NULL AUTO_INCREMENT, `full_names` varchar(255) NOT NULL, `gender` varchar(6) NOT NULL, `contact_no` varchar(75) NOT NULL, `email` varchar(255) NOT NULL, `city` varchar(255) NOT NULL, `country` varchar(255) NOT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=5 ; INSERT INTO `my_contacts` (`id`, `full_names`, `gender`, `contact_no`, `email`, `city`, `country`) VALUES (1, 'Zeus', 'Male', '111', 'zeus@olympus.mt.co', 'Agos', 'Greece'), (2, 'Anthena', 'Female', '123', 'anthena@olympus.mt.co', 'Athens', 'Greece'), (3, 'Jupiter', 'Male', '783', 'jupiter@planet.pt.co', 'Rome', 'Italy'), (4, 'Venus', 'Female', '987', 'venus@planet.pt.co', 'Mars', 'Italy');
Lecture des enregistrements de la base de donnรฉes
Nous allons maintenant crรฉer un programme qui imprime les enregistrements de la base de donnรฉes.
<?php $dbh = mysqli_connect('localhost', 'root', 'melody'); // connect to MySQL server if (!$dbh) die("Unable to connect to MySQL: " . mysqli_connect_error()); if (!mysqli_select_db($dbh, 'my_personal_contacts')) die("Unable to select database: " . mysqli_error($dbh)); $sql_stmt = "SELECT * FROM my_contacts"; // SQL select query $result = mysqli_query($dbh, $sql_stmt); // execute SQL statement if (!$result) die("Database access failed: " . mysqli_error($dbh)); $rows = mysqli_num_rows($result); // get number of rows returned if ($rows) { while ($row = mysqli_fetch_array($result)) { echo 'ID: ' . $row['id'] . '<br>'; echo 'Full Names: ' . $row['full_names'] . '<br>'; echo 'Gender: ' . $row['gender'] . '<br>'; echo 'Contact No: ' . $row['contact_no'] . '<br>'; echo 'Email: ' . $row['email'] . '<br>'; echo 'City: ' . $row['city'] . '<br>'; echo 'Country: ' . $row['country'] . '<br><br>'; } } mysqli_close($dbh); // close the database connection ?>
L'exรฉcution du code ci-dessus renvoie les rรฉsultats illustrรฉs dans le diagramme ci-dessous.
Insรฉrer de nouveaux enregistrements
Prenons maintenant l'exemple de l'ajout d'un nouvel enregistrement ร notre table. Le code ci-dessous illustre cette implรฉmentation.
<?php $dbh = mysqli_connect('localhost', 'root', 'melody'); // connect to MySQL server if (!$dbh) die("Unable to connect to MySQL: " . mysqli_connect_error()); if (!mysqli_select_db($dbh, 'my_personal_contacts')) die("Unable to select database: " . mysqli_error($dbh)); $sql_stmt = "INSERT INTO `my_contacts` (`full_names`,`gender`,`contact_no`,`email`,`city`,`country`)"; $sql_stmt .= " VALUES(7,8,9,10,11,12)"; $result = mysqli_query($dbh, $sql_stmt); // execute SQL statement if (!$result) die("Adding record failed: " . mysqli_error($dbh)); echo "Poseidon has been successfully added to your contacts list"; mysqli_close($dbh); // close the database connection ?>
L'exรฉcution du code ci-dessus affiche le message ยซ Poseidon a bien รฉtรฉ ajoutรฉ ร votre liste de contacts ยป. Retournez ร l'exemple de requรชte SELECT et rรฉcupรฉrez ร nouveau vos contacts pour vรฉrifier si Poseidon y figure.
Mise ร jour des enregistrements
Prenons maintenant l'exemple de la mise ร jour d'un enregistrement dans la base de donnรฉes. Supposons que Posรฉidon ait modifiรฉ son numรฉro de tรฉlรฉphone et son adresse รฉlectronique.
<?php $dbh = mysqli_connect('localhost', 'root', 'melody'); // connect to MySQL server if (!$dbh) die("Unable to connect to MySQL: " . mysqli_connect_error()); if (!mysqli_select_db($dbh, 'my_personal_contacts')) die("Unable to select database: " . mysqli_error($dbh)); $sql_stmt = "UPDATE `my_contacts` SET `contact_no` = 8, `email` = 9"; $sql_stmt .= " WHERE `id` = 5"; // SQL update query $result = mysqli_query($dbh, $sql_stmt); // execute SQL statement if (!$result) die("Updating record failed: " . mysqli_error($dbh)); echo "ID number 5 has been successfully updated"; mysqli_close($dbh); // close the database connection ?>
Suppression d'enregistrements
Prenons maintenant l'exemple de la suppression d'enregistrements dans une base de donnรฉes. Supposons que Vรฉnus ait obtenu une ordonnance restrictive ร notre encontre et que nous devions supprimer ses coordonnรฉes de notre base de donnรฉes. base de donnรฉes.
<?php $dbh = mysqli_connect('localhost', 'root', 'melody'); // connect to MySQL server if (!$dbh) die("Unable to connect to MySQL: " . mysqli_connect_error()); if (!mysqli_select_db($dbh, 'my_personal_contacts')) die("Unable to select database: " . mysqli_error($dbh)); $id = 4; // Venus's ID in the database $sql_stmt = "DELETE FROM `my_contacts` WHERE `id` = $id"; // SQL delete query $result = mysqli_query($dbh, $sql_stmt); // execute SQL statement if (!$result) die("Deleting record failed: " . mysqli_error($dbh)); echo "ID number $id has been successfully deleted"; mysqli_close($dbh); // close the database connection ?>
Prรฉvention des injections SQL grรขce aux requรชtes prรฉparรฉes
Les exemples CRUD ci-dessus construisent des requรชtes en concatรฉnant des chaรฎnes de caractรจres. Lorsqu'une partie d'une requรชte provient d'une saisie utilisateur, cela ouvre la porte aux injections SQL. Les requรชtes prรฉparรฉes rรฉsolvent ce problรจme en envoyant la requรชte et les donnรฉes sรฉparรฉment, empรชchant ainsi toute modification de la structure de la requรชte par les entrรฉes utilisateur.
<?php $dbh = mysqli_connect('localhost', 'root', 'melody'); $stmt = mysqli_prepare($dbh, "INSERT INTO my_contacts (full_names, email) VALUES (?, ?)"); mysqli_stmt_bind_param($stmt, "ss", $name, $email); $name = 'Poseidon'; $email = 'poseidon@sea.oc'; mysqli_stmt_execute($stmt); mysqli_stmt_close($stmt); mysqli_close($dbh); ?>
Ici, les points d'interrogation servent de marqueurs de substitution, et `bind_param` lie en toute sรฉcuritรฉ les valeurs du nom et de l'adresse e-mail. La base de donnรฉes les traite comme des donnรฉes ร part entiรจre ; c'est pourquoi les requรชtes prรฉparรฉes, disponibles dans mysqli et PDO, sont la mรฉthode recommandรฉe pour exรฉcuter toute requรชte utilisant des donnรฉes saisies par l'utilisateur.
Objet d'accรจs aux donnรฉes PHP (PDO)
PDO est une classe qui nous permet de manipuler diffรฉrents moteurs de bases de donnรฉes tels que MySQL, PostgreSQLet MS SQL Server utilisant la mรชme interface.
Le code ci-dessous montre la mรฉthode d'accรจs ร la base de donnรฉes ร l'aide de l'objet PDO.
Remarque : le code ci-dessous suppose une connaissance du langage SQL, des tableaux, de la gestion des exceptions et de la boucle foreach.
<?php try { $pdo = new PDO("mysql:host=localhost;dbname=my_personal_contacts", 'root', 'melody'); $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); $pdo->exec('SET NAMES "utf8"'); $sql_stmt = "SELECT * FROM `my_contacts`"; $result = $pdo->query($sql_stmt); $result->setFetchMode(PDO::FETCH_ASSOC); $data = array(); foreach ($result as $row) { $data[] = $row; } print_r($data); } catch (PDOException $e) { echo $e->getMessage(); } ?>
ICI,
- ยซ try{โฆ}catch{โฆ} ยป est le bloc de gestion des exceptions
- ยซ $pdo = new PDO(โmysqlโฆโ crรฉe une instance de lโobjet PDO et transmet le pilote de base de donnรฉes, le nom du serveur et de la base de donnรฉes, lโidentifiant de lโutilisateur et le mot de passe.
- ยซ $pdo->setAttributeโฆ ยป configure le mode dโerreur PDO pour lever des exceptions
- ยซ $pdo->exec('SET NAMESโฆ') dรฉfinit le format d'encodage
Accรจs aux donnรฉes ODBC PHP
ODBC est l'acronyme de Open Database Connectivity. Sa syntaxe de base est la suivante.
<?php $conn = odbc_connect($dsn, $user_name, $password); ?>
ICI,
- ยซ odbc_connect ยป est la fonction intรฉgrรฉe de PHP
- ยซ $dsn ยป est le nom de la source de donnรฉes ODBC.
- ยซ $user_name ยป est facultatif et est utilisรฉ pour le nom d'utilisateur ODBC.
- Le champ ยซ $password ยป est facultatif et sert au mot de passe ODBC.
L'exemple ci-dessous suppose que vous utilisez Windows et ont crรฉรฉ un lien ODBC vers le vent du nord Microsoft Base de donnรฉes Access nommรฉe Northwind.
<?php $dbh = odbc_connect('northwind', '', ''); if (!$dbh) { exit("Connection Failed: " . $dbh); } $sql_stmt = "SELECT * FROM customers"; $result = odbc_exec($dbh, $sql_stmt); if (!$result) { exit("Error accessing records"); } while (odbc_fetch_row($result)) { $company_name = odbc_result($result, "CompanyName"); $contact_name = odbc_result($result, "ContactName"); echo "<b>Company Name (Contact Person):</b> $company_name ($contact_name) <br>"; } odbc_close($dbh); ?>

