11-03-2008, 01:02 PM
(Modification du message : 11-03-2008, 01:04 PM par Sephi-Chan.)
De toute façon, c'est toujours la même chose. Une requête, ça se débogue facilement :
Code PHP :
<?php
$query = sprintf(
"INSERT INTO inventaire (champ1, champ2, champ3)
VALUES('%s', %d, %d)",
mysql_real_escape_string($chaine),
(int) $entier,
(int) $entier
);
if(mysql_query($query)){ echo "Ok."; }
else { echo '<p>'.$query.'</p>'; echo '<p>'.mysql_error().'</p>'; }
Il faut penser à lister les champs que tu vas remplir, puis leurs valeurs. J'en profite que tu peux utiliser SET, comme dans un UPDATE pour affecter une valeur à un champ. C'est très pratique si tu es du genre tête en l'air, ça évite d'inverser 2 champs. Le sprintf() te permet d'appliquer tes fonctions de protection et de transtypage à la volée. Je pense que tu comprendras son fonctionnement en voyant l'exemple.
Pensez également à profiter des valeurs par défaut : un champ qui doit contenir la date d'inscription, ben on lui met la valeur par défaut (dans phpMyAdmin, par exemple) CURRENT_TIMESTAMP() et comme ça, pas besoin de s'en occuper dans la requête. De même pour les champs auto incrémentés. En clair : Utilises les valeurs par défaut (pour le 0 dans ton cas, par exemple.
Ensuite, on entoure de simples quotes les chaînes de caractères et les dates, pas les nombres.
Avec mon exemple, si la requête foire, ça te l'affiche et ça t'affiche l'erreur.
Enfin bref, je dirais pour finir que les débogages de requêtes sont toujours les mêmes, et qu'on répète toujours les même s choses pour les résoudre.
Sephi-Chan