Je viens de faire un peu de ménage dans les
requetes SQL (pas grand chose) mais il vallait mieux le faire, je n'ai pas envie
qu'un démo à Poitiers foire à cause d'un select pas convenable ;-)
J'en profite pour faire les petits rappels
d'usage ;-)
Pour les insert :
insert into TABLE (COLONNES,COLONNES,...) values
(VALEURS, VALEURS)
pb si pas ça : si colonnes ajoutées, structure
de la table modifiée, ordre des champs pas celui attendu : erreur grave !!!
Pour les select :
select COLONNES, COLONNES
éviter les * (question de performance), sauf si
vous êtes sûr d'avoir besoin de tout, mais ça n'est pas grave. Erreur grave si utilisation de
mysql_fetch_row au lieu de mysql_fetch_object (ou array) : les row[$i] vont
dépendre de l'ordre des colonnes en base, pas forcément celui
attendu.
quand on vérifie si un enregistrement existe :
select 1 where CLAUSE :
beaucoup moins gourmand que select count(*)
where CLAUSE
1 parce qu'en fait on se fout de la colonne, le
but est de savoir si la clause where est vérifiée ou pas, sauf si en fonction
du résultat vous faites un fetch_object après ;-)
order by CHAMPS, CHAMPS,
on évite order by 1, 2 (sauf si on ne
connait pas les champs, exemple "SELECT * FROM `$table` order by
2"
Pour toutes les requetes
:
pas de ";" à la fin de la chaine de
caractères contenant la requete, risque de pépins, c'est le parser php qui
envoie le délimiteur d'ordre SQL.
Eric
|