(PHP 4, PHP 5)
mysql_query — Envoie une requête à un serveur MySQL
Cette extension est obsolète depuis PHP 5.5.0, et sera supprimée dans le futur. À la place, les extensions MySQLi ou PDO_MySQL doivent être utilisées. Voir aussi le guide MySQL : choix de l'API ainsi que la FAQ associée pour plus d'information. Voici les alternatives à cette fonction :
$query
[, resource $link_identifier
= NULL
] )
mysql_query() envoie une seule requête (les
requêtes multiples ne sont pas supportées) à la base de données
courante sur le serveur associé avec le link_identifier
spécifié.
query
Une requête SQL
La chaîne de requête ne doit pas se terminer par un point-virgule. Les données contenues dans la requête doivent être échappées proprement.
link_identifier
La connexion MySQL.
S'il n'est pas spécifié, la dernière connexion ouverte avec la fonction
mysql_connect() sera utilisée. Si une telle connexion
n'est pas trouvée, la fonction tentera d'ouvrir une connexion, comme si
la fonction mysql_connect() avait été appelée sans argument.
Si aucune connexion n'est trouvée ou établie, une alerte
E_WARNING
est générée.
Pour les requêtes du type SELECT, SHOW,
DESCRIBE, EXPLAIN et les autres requêtes retournant un
jeu de résultats, mysql_query() retournera une ressource en cas de succès,
ou FALSE
en cas d'erreur.
Pour les autres types de requêtes, INSERT, UPDATE,
DELETE, DROP, etc.,
mysql_query() retourne TRUE
en cas de succès
ou FALSE
en cas d'erreur.
La ressource de résultat retournée doit être passée à la fonction mysql_fetch_array(), et les autres fonctions permettant d'explorer le résultat des tables, pour accéder aux données retournées.
Utilisez mysql_num_rows() pour trouver le nombre de lignes retournées pour une requête du type SELECT ou mysql_affected_rows() pour trouver le nombre de lignes affectées par les requêtes du type DELETE, INSERT, REPLACE, ou UPDATE.
mysql_query() échouera et retournera FALSE
si l'utilisateur n'a pas les autorisations nécessaires pour accéder à la (aux) table(s)
référencée(s) par la requête.
Exemple #1 Requête invalide
La requête suivante est syntaxiquement invalide, donc
mysql_query() va échouer et retourner FALSE
.
<?php
$result = mysql_query('SELECT * WHERE 1=1');
if (!$result) {
die('Requête invalide : ' . mysql_error());
}
?>
Exemple #2 Requête valide
La requête suivante est valide, donc mysql_query() va retourner une ressource.
<?php
// Ceci peut être demandé par un utilisateur, par exemple :
$firstname = 'fred';
$lastname = 'fox';
// Formulation de la requête
// C'est la meilleur façon d'exécuter une requête SQL
// Pour plus d'exemples, voir mysql_real_escape_string()
$query = sprintf("SELECT firstname, lastname, address, age FROM friends
WHERE firstname='%s' AND lastname='%s'",
mysql_real_escape_string($firstname),
mysql_real_escape_string($lastname));
// Exécution de la requête
$result = mysql_query($query);
// Vérification du résultat
// Ceci montre la requête envoyée à MySQL ainsi que l'erreur. Utile pour déboguer.
if (!$result) {
$message = 'Requête invalide : ' . mysql_error() . "\n";
$message .= 'Requête complète : ' . $query;
die($message);
}
// Utilisation du résultat
// Tenter d'affichager $result ne vous donnera pas d'informations contenues dans la ressource
// Une des fonctions MySQL de résultat doit être utilisée
// Voir aussi mysql_result(), mysql_fetch_array(), mysql_fetch_row(), etc.
while ($row = mysql_fetch_assoc($result)) {
echo $row['firstname'];
echo $row['lastname'];
echo $row['address'];
echo $row['age'];
}
// Libération des ressources associées au jeu de résultats
// Ceci est effectué automatiquement à la fin du script
mysql_free_result($result);
?>