oujood.com

query() / mysqli_query() : la fonction essentielle pour les requêtes SQL en PHP

Cet article présente la fonction query() en détail, en abordant sa définition, son utilisation, ses syntaxes, ses valeurs possibles et ses paramètres. Il fournit également des exemples pratiques et des astuces pour une utilisation efficace.

Exécuter des requêtes SQL en PHP avec la fonction query()

PHP Version: 5+

PHP Évolution: PHP 5.3.0 ajout de la possibilité d'effectuer des requêtes asynchrones

La fonction query(), ou mysqli_query(), est l'une des fonctions les plus importantes en PHP pour les applications qui interagissent avec une base de données. Elle permet d'exécuter des requêtes SQL sur une base de données MySQL.

La fonction query() prend deux arguments :

  • Une instance de la classe mysqli ou mysqli_result
  • La requête SQL à exécuter

La fonction retourne true si la requête a été exécutée avec succès, et false si une erreur s'est produite.

Syntaxe orientée objet

$mysqli = new mysqli('localhost', 'root', '', 'my_database');

if ($mysqli->connect_error) {
die('Erreur de connexion à la base de données : ' . $mysqli->connect_error);
}

$result = $mysqli->query('SELECT * FROM users');

Syntaxe procédurale

$mysqli = mysqli_connect('localhost', 'root', '', 'my_database');

if (mysqli_connect_error()) {
die('Erreur de connexion à la base de données : ' . mysqli_connect_error());
}

$result = mysqli_query($mysqli, 'SELECT * FROM users');

Valeurs possibles et paramètres

La fonction query() peut retourner les valeurs suivantes :

  • true : la requête a été exécutée avec succès
  • false : une erreur s'est produite

La fonction query() prend un paramètre optionnel, MYSQLI_ASYNC, qui permet d'exécuter la requête de manière asynchrone.

Exemples pratiques

Exemple 1 : Exécuter une requête simple

Approche Orientée Objet

Exemple :     📋 Copier le code

<?php

// Approche Orientée Objet
$mysqli = new mysqli('localhost', 'root', '', 'my_database');

// Vérifier la connexion à la base de données
if ($mysqli->connect_error) {
die('Erreur de connexion à la base de données : ' . $mysqli->connect_error);
}

// Exécuter une requête SQL
$query = 'SELECT * FROM users';
$result = $mysqli->query($query);

// Vérifier si la requête a réussi
if ($result === false) {
die('Erreur d\'exécution de la requête : ' . $mysqli->error);
}

// Parcourir et afficher les résultats
foreach ($result as $row) {
echo $row['name'] . ' ' . $row['email'] . '<br>'';
}

// Fermer la connexion
$mysqli->close();

?>

Approche Procédurale

Exemple :     📋 Copier le code

<?php

// Approche Procédurale
$mysqli = mysqli_connect('localhost', 'root', '', 'my_database');

// Vérifier la connexion à la base de données
if (mysqli_connect_error()) {
die('Erreur de connexion à la base de données : ' . mysqli_connect_error());
}

// Exécuter une requête SQL
$query = 'SELECT * FROM users';
$result = mysqli_query($mysqli, $query);

// Vérifier si la requête a réussi
if ($result === false) {
die('Erreur d\'exécution de la requête : ' . mysqli_error($mysqli));
}

// Parcourir et afficher les résultats
while ($row = mysqli_fetch_assoc($result)) {
echo $row['name'] . ' ' . $row['email'] . '<br>'';
}

// Libérer les résultats et fermer la connexion
mysqli_free_result($result);
mysqli_close($mysqli);

?>

Exemple 2 : Exécuter une requête avec des paramètres

Approche Orientée Objet

Exemple :     📋 Copier le code

<?php

// Approche Orientée Objet
$mysqli = new mysqli('localhost', 'root', '', 'my_database');

// Vérifier la connexion à la base de données
if ($mysqli->connect_error) {
die('Erreur de connexion à la base de données : ' . $mysqli->connect_error);
}

// Exécuter une requête SQL avec un paramètre
$name = 'John Doe';
$query = 'SELECT * FROM users WHERE name = ?';
$stmt = $mysqli->prepare($query);
$stmt->bind_param('s', $name); // 's' indique une chaîne de caractères

// Exécuter la requête
$stmt->execute();

// Obtenir les résultats
$result = $stmt->get_result();

// Vérifier si la requête a réussi
if ($result === false) {
die('Erreur d\'exécution de la requête : ' . $mysqli->error);
}

// Parcourir et afficher les résultats
while ($row = $result->fetch_assoc()) {
echo $row['name'] . ' ' . $row['email'] . '<br>'';
}

// Fermer la connexion
$stmt->close();
$mysqli->close();

?>

Approche Procédurale

Exemple :     📋 Copier le code

<?php

// Approche Procédurale
$mysqli = mysqli_connect('localhost', 'root', '', 'my_database');

// Vérifier la connexion à la base de données
if (mysqli_connect_error()) {
die('Erreur de connexion à la base de données : ' . mysqli_connect_error());
}

// Exécuter une requête SQL avec un paramètre
$name = 'John Doe';
$query = 'SELECT * FROM users WHERE name = ?';
$stmt = mysqli_prepare($mysqli, $query);
mysqli_stmt_bind_param($stmt, 's', $name); // 's' indique une chaîne de caractères

// Exécuter la requête
mysqli_stmt_execute($stmt);

// Obtenir les résultats
$result = mysqli_stmt_get_result($stmt);

// Vérifier si la requête a réussi
if ($result === false) {
die('Erreur d\'exécution de la requête : ' . mysqli_error($mysqli));
}

// Parcourir et afficher les résultats
while ($row = mysqli_fetch_assoc($result)) {
echo $row['name'] . ' ' . $row['email'] . '<br>'';
}

// Libérer les résultats et fermer la connexion
mysqli_stmt_close($stmt);
mysqli_close($mysqli);
?>

Ces exemples illustrent comment exécuter une requête SQL avec des paramètres en utilisant l'approche orientée objet et procédurale avec les fonctions prepare(), bind_param(), execute() (ou mysqli_stmt_bind_param(), mysqli_stmt_execute() en approche procédurale) en PHP.
Assurez-vous d'adapter ces exemples en fonction de votre configuration de base de données et de vos besoins spécifiques.

Astuces et conseils d'utilisation pratique

  • Il est important de vérifier si la requête a été exécutée avec succès avant d'utiliser les résultats.
  • Si la requête retourne un jeu de résultats, il est important de le libérer après utilisation.
  • La fonction mysqli_fetch_assoc() permet de récupérer les résultats d'une requête sous forme d'un tableau associatif.

Pour en savoir plus sur la fonction query(), consultez la documentation officielle de PHP.


Voir aussi nos tutoriel :

str_pad, str_pad

Complète une chaîne jusqu' une taille donnée

Balise body

Définit le corps du document

fonction strripos, strripos

Trouve la position de la derniére occurrence d'une chaîne dans une autre, de fa on insensible la casse