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
 

Répondre à