Envoie une requête à un serveur MySQL

# mysql_query

(PHP 4, PHP 5)

mysql_query — Envoie une requête à un serveur MySQL

Avertissement

Cette extension était obsolète en PHP 5.5.0, et a été supprimée en PHP 7.0.0. À la place, vous pouvez utiliser l'extension MySQLi ou l'extension PDO_MySQL. Voir aussi MySQL : choisir une API du guide. Alternatives à cette fonction :

- mysqli_query()
- PDO::query()

### Description

function mysql_query(string `$query`, resource `$link_identifier` = NULL): mixed

mysql_query() envoie une seule requête (les requêtes multiples ne sont pas prises en charge) à la base de données courante sur le serveur associé avec le `link_identifier` spécifié.

### Liste de paramètres

`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 de niveau `E_WARNING` sera générée.

### Valeurs de retour

Pour les requêtes du type `SELECT`, `SHOW`, `DESCRIBE`, `EXPLAIN` et les autres requêtes retournant un jeu de résultats, mysql_query() retourne une resource 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.

Utiliser 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() échoue et retourne `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.

### Exemples

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 resource.

    <?php
    // Ceci peut être demandé par un utilisateur, par exemple :
    $firstname = 'fred';
    $lastname  = 'fox';

    // Formulation de la requête
    // C'est la meilleure 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'afficher $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);
    ?>

### Voir aussi

- mysql_connect() - Ouvre une connexion à un serveur MySQL
- mysql_error() - Retourne le texte associé avec l'erreur générée lors de la dernière requête
- mysql_real_escape_string() - Protège une commande SQL de la présence de caractères spéciaux
- mysql_result() - Retourne un champ d'un résultat MySQL
- mysql_fetch_assoc() - Lit une ligne de résultat MySQL dans un tableau associatif
- mysql_unbuffered_query() - Exécute une requête SQL sans mobiliser les résultats MySQL

`↑` and `↓` to navigate • `Enter` to select • `Esc` to close • `/` to open