mysql_query

(PHP 3, PHP 4 )

mysql_query -- Envoie une requête SQL à un serveur MySQL

Description

resource mysql_query ( string query [, resource link_identifier])

mysql_query() envoie une requête SQL à la base de données actuellement active sur le serveur MysQL. Si link_identifier n'est pas précisé, la dernière connexion est utilisée. Si aucune connexion n'a été ouverte, la fonction tentera d'en ouvrir une, avec la fonction mysql_connect() mais sans aucun paramètre (c'est-à-dire avec les valeurs par défaut).

Le paramètre optionnel result_mode peut prendre les valeurs de MYSQL_USE_RESULT ou MYSQL_STORE_RESULT. Par défaut, il vaut MYSQL_STORE_RESULT, ce qui fait que le résultat est mis dans un buffer. Voyez aussi la fonction mysql_unbuffered_query() pour comprendre cas où le résultat n'est pas mis en buffer.

Note : La requête ne doit pas être terminée par un point-virgule.

Seules les requêtes SQL SELECT, SHOW, EXPLAIN et DESCRIBE, utilisées avec mysql_query() retourne une ressource de résultat MySQL, ou bien FALSE si la requête n'a pu être exécuté correctement. Pour les autres types de requêtes SQL, mysql_query() retourne TRUE en cas de succès et FALSE en cas d'erreur. Un résultat différent de FALSE, la valeur signifie que la requête soumise est valide et qu'elle a pu être exécutée correctement. Cela n'apporte aucune indication sur le nombre de lignes affectées. Il est parfaitement possible qu'une requête soit réussie, mais qu'elle ne modifie aucune ligne, ou qu'elle n'en retourne aucune.

L'exemple suivant est syntaxiquement invalide, ce qui conduit mysql_query() à l'échec et retourne FALSE:

Exemple 1. Exemple avec mysql_query()

<php
$result = mysql_query("SELECT * WHERE 1=1")
    or die ("Requ&ecirc;te invalide");
?>

L'exemple suivant est sémantiquement invalide si ma_colonne n'est pas une colonne de la table my_table, ce qui conduit mysql_query() à l'échec et retourne FALSE :

Exemple 2. Exemple avec mysql_query() (2)

<?php
$result
= mysql_query("SELECT ma_colonne FROM ma_table")
    or die (
"Requ&ecirc;te invalide");
?>

mysql_query() échouera aussi et retournera aussi FALSE si les droits d'accès ne sont pas suffisants.

En supposant que la requête réussisse, vous pouvez appeler mysql_affected_rows() pour connaître le nombre de lignes affectées (pour les commandes DELETE, INSERT, REPLACE, ou UPDATE ).

Pour les commandes SELECT , mysql_query() retourne un identifiant de résultat que vous pouvez passer à mysql_fetch_array(), ou n'importe quelle autre fonction de lecture de résultat. Lorsque vous avez terminé avec le résultat, libérez la mémoire avec mysql_free_result().

Voir aussi mysql_num_rows(), mysql_affected_rows(), mysql_unbuffered_query(), mysql_free_result(), mysql_fetch_array(), mysql_fetch_row(), mysql_fetch_assoc(), mysql_result(), mysql_select_db() et mysql_connect().