26.06.2013 Views

FAQ PHP

FAQ PHP

FAQ PHP

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

<strong>FAQ</strong> <strong>PHP</strong><br />

LIMIT a, b<br />

La clause SELECT permet de choisir les colonnes (séparées par une virgule) du résultat (c'est une<br />

projection). La clause FROM dit de quelles tables (séparées par une virgule) proviennent les lignes du<br />

résultat. La clause WHERE permet de sélectionner les lignes selon les valeurs des colonnes, les opérateurs<br />

booléens AND, OR et NOT, ainsi que les parenthèses et autres fonctions de MySQL sont possibles. La<br />

clause ORDER BY permet de faire un tri ASCendant ou DESCendant sur une ou plusieurs colonnes<br />

(séparées par une virgule). La clause GROUP BY permet de regrouper les lignes qui ont une colonne en<br />

commun (par exemple "GROUP BY nom" permet de grouper les lignes selon le nom). La clause LIMIT<br />

permet de paginer les résultats en ne retournant que les lignes numéros a à b par mis celles du résultat.<br />

La commande LIKE permet de faire une comparaison sur les chaînes de caractères. Cette comparaison<br />

est insensible à la casse, sauf sur les colonnes dont le type est de la famille des BLOB. Les caractères<br />

spéciaux % et _ sont des caractères génériques au même titre que * et ? sous Linux et MS-DOS. Ils signifient<br />

respectivement n'importe quelle chaîne (même vide), un seul caractère quelconque.<br />

La commande BETWEEN .. AND ... permet de comparer la valeur d'une colonne à un intervalle de valeurs.<br />

La commande IN(...,) permet de comparer la valeur d'une colonne à une liste de valeurs prédéfinies.<br />

Auteurs : Cyberzoide ,<br />

Peut-on exécuter plusieurs requêtes SQL en un seul mysql_query() ?<br />

Non, même en séparant les requêtes par un point virgule, MySQL refusera d'exécuter plusieurs requêtes<br />

en un seul appel de mysql_query().<br />

Exemple faux :<br />

mysql_query("UPDATE `table` SET `col`='value' WHERE `id`=$id; DELETE FROM `table` WHERE `id`=$id2");<br />

Exemple correct :<br />

mysql_query("UPDATE `table` SET `col`='value' WHERE `id`=$id");<br />

mysql_query("DELETE FROM `table` WHERE `id`=$id2");<br />

Comment connaître le nombre de lignes retournées par une requête MySQL ?<br />

Auteurs : Cyberzoide ,<br />

La fonction mysql_num_rows($result) retourne ce nombre de lignes, $result est le pointeur de résultat<br />

retourné par mysql_query().<br />

Exemple :<br />

$result = mysql_query("SELECT * FROM user") or die("erreur de base de données");<br />

echo "Il y a ".mysql_num_rows($result)."résultats.";<br />

Si les résultats en eux-mêmes ne vous intéressent pas, utilisez directement la fonction de groupe COUNT(*)<br />

dans la requête MySQL.<br />

Exemple :<br />

$result = mysql_query("SELECT COUNT(*) FROM user") or die("erreur de base de données");<br />

$ligne = mysql_fetch_row($result);<br />

echo "Il y a ".$ligne[0]."résultats.";<br />

La fonction mysql_num_rows est une boucle sur un curseur. Elle va donc consommer beaucoup plus qu'un<br />

simple COUNT en SQL. Faites l'essai sur une table contenant plusieurs millions de lignes pour le vérifier.<br />

En effet, <strong>PHP</strong> va "dumper" toutes les lignes pour obtenir ce nombre.<br />

Il vaut donc mieux pour compter le nombre de lignes (dans 90% des cas) faire un "select count(*) from..."<br />

et non utiliser mysql_num_rows().<br />

Auteurs : Julp ,<br />

Comment connaître le nombre d'enregistrements affectés<br />

par une requête de type : DELETE, INSERT ou UPDATE ?<br />

La fonction mysql_affected_rows(), qui prend en unique paramètre l'identifiant de requête, retourne le<br />

nombre de lignes modifiées par une requête de type : delete, insert ou update. Elle ne fonctionne en<br />

- 44 -<br />

Les sources présentées sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page de présentation<br />

de ces sources constitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2003 Developpez LLC. Tout droits réservés<br />

Developpez LLC. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images<br />

sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 E de dommages<br />

et intérêts.

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!