Problème INSERT INTO

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Problème INSERT INTO

par Sékiltoyai » 01 juil. 2007, 20:51

Question : Il est quelle heure ?
Réponse : Il fait beau aujourd'hui...

Déjà, tu dis que dans la doc, ils utilisent sprintf (on peut très bien s'en passer), mais bizarrement je ne vois pas de sprintf dans ton code.
Ensuite, quand je te demandais si ca te choquait d'uitiliser une fonction php de cette manière :
"mysql_real_escape_string($details)" 
, ca voulait dire que quand on utilise une fonction, on ne la met pas dans une chaine, mais à l'extérieur. On ne fait pas
"truc, mysql_real_escape_string($var) , machin"
mais
"truc, " . mysql_real_escape_string($var) . ", machin"
Enfin, mysql_real_escape_string() s'utilise de cette manière :
mysql_query(" INSERT INTO table VALUES('" . mysql_real_escape_string($var) . "'); ");

par neo765 » 01 juil. 2007, 18:24

Dans la doc ils mettent :
// Requête
$query = sprintf("SELECT * FROM users WHERE user='%s' AND password='%s'",
mysql_real_escape_string($user),
mysql_real_escape_string($password));

par Sékiltoyai » 01 juil. 2007, 17:49

Ca ne te choque pas d'utiliser une fonction php comme cela ?
"mysql_real_escape_string($details)"

par neo765 » 01 juil. 2007, 17:12

Utilise mysql_real_escape_string() sur les données de ta requète pour les échapper...
J'ai essayé d'utiliser cette fonction mais il n'y a plus rien qui rentre dans la base "fini" :
$maj5=mysql_query ("INSERT INTO fini (idpari, idmembre, type, cote, mise, status, details, date) VALUES ('%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s')", $id_pari_combine, $idmembre, 3, $cote, $mise, $status, mysql_real_escape_string($details), $datetime) or die ("Erreur MySQL : ".mysql_error());

par Sékiltoyai » 30 juin 2007, 23:46

Utilise mysql_real_escape_string() sur les données de ta requète pour les échapper...

par chrislabricole » 30 juin 2007, 23:42

ben sa, c'est une erreur de syntax.... va sur la doc de mysql.. tu aura d'avantages d'infos...

par neo765 » 30 juin 2007, 23:40

Merci pour ton information
Erreur MySQL : You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'America 2007
Je pense avoir compris : ça vient du ' de "coupe de l'america 2007"

Ya t'il une solution de corriger le problème sans supprimer le ' ?

Encore merci

par @rthur » 30 juin 2007, 23:34

Bonjour,

Remplace:
$maj5=mysql_query ("INSERT INTO fini (idpari, idmembre, type, cote, mise, status, details, date) VALUES ('$id_pari_combine', '$idmembre', '3', '$cote', '$mise', '$status', '$details', '$datetime')");
par
$maj5=mysql_query ("INSERT INTO fini (idpari, idmembre, type, cote, mise, status, details, date) VALUES ('$id_pari_combine', '$idmembre', '3', '$cote', '$mise', '$status', '$details', '$datetime')") or die("Erreur MySQL : ".mysql_error());
ça te permettra d'afficher les erreurs MySQL pour déboguer plus facilement... ;)

Problème INSERT INTO

par neo765 » 30 juin 2007, 21:45

Salut,

J'ai un petit problème :

Je n'arrive pas à executer la requete SQL INSERT INTO :

//-------------------------------------------------------------------------------------------------------------------
// On génére le tableau : 1ère partie -------------------------------------------------------------------------------
//-------------------------------------------------------------------------------------------------------------------

$texte1='<table width="95%" border="0">
  <tr> 
    <td width="50%"> <div align="center"><font color="#333333" size="2" face="Tahoma">'.$competition_1.'</font></div></td>
    <td width="25%" rowspan="3"> <div align="center"></div>
      <div align="center"></div>
      <div align="center"><font size="2" face="Tahoma">'.$cote1.'</font></div></td>
    <td width="25%" rowspan="3"> <div align="center"></div>
      <div align="center"></div>
      <div align="center"><strong><font color="'.$couleur_1.'" size="2" face="Tahoma">'.$etat_1.'</font></strong></div></td>
  </tr>
  <tr> 
    <td><div align="center"><font size="2" face="Tahoma"><strong>'.$choixtext1.'</strong></font></div></td>
  </tr>
  <tr> 
    <td><div align="center"><font color="#990000" size="2" face="Tahoma">Votre choix : '.$equipe_choisie_1.'</font></div></td>
  </tr>
</table>';

//-------------------------------------------------------------------------------------------------------------------
// On génére le tableau : 2nde partie -------------------------------------------------------------------------------
//-------------------------------------------------------------------------------------------------------------------

$texte2='<table width="95%" border="0">
  <tr> 
    <td width="50%"> <div align="center"><font color="#333333" size="2" face="Tahoma">'.$competition_2.'</font></div></td>
    <td width="25%" rowspan="3"> <div align="center"></div>
      <div align="center"></div>
      <div align="center"><font size="2" face="Tahoma">'.$cote2.'</font></div></td>
    <td width="25%" rowspan="3"> <div align="center"></div>
      <div align="center"></div>
      <div align="center"><strong><font color="'.$couleur_2.'" size="2" face="Tahoma">'.$etat_2.'</font></strong></div></td>
  </tr>
  <tr> 
    <td><div align="center"><font size="2" face="Tahoma"><strong>'.$choixtext2.'</strong></font></div></td>
  </tr>
  <tr> 
    <td><div align="center"><font color="#990000" size="2" face="Tahoma">Votre choix : '.$equipe_choisie_2.'</font></div></td>
  </tr>
</table>';

//-------------------------------------------------------------------------------------------------------------------
// On génére le tableau : 3ème partie -------------------------------------------------------------------------------
//-------------------------------------------------------------------------------------------------------------------

$texte3='<table width="95%" border="0">
  <tr> 
    <td width="50%"> <div align="center"><font color="#333333" size="2" face="Tahoma">'.$competition_3.'</font></div></td>
    <td width="25%" rowspan="3"> <div align="center"></div>
      <div align="center"></div>
      <div align="center"><font size="2" face="Tahoma">'.$cote3.'</font></div></td>
    <td width="25%" rowspan="3"> <div align="center"></div>
      <div align="center"></div>
      <div align="center"><strong><font color="'.$couleur_3.'" size="2" face="Tahoma">'.$etat_3.'</font></strong></div></td>
  </tr>
  <tr> 
    <td><div align="center"><font size="2" face="Tahoma"><strong>'.$choixtext3.'</strong></font></div></td>
  </tr>
  <tr> 
    <td><div align="center"><font color="#990000" size="2" face="Tahoma">Votre choix : '.$equipe_choisie_3.'</font></div></td>
  </tr>
</table>';

//-------------------------------------------------------------------------------------------------------------------
$details="$texte1<br>$texte2<br>$texte3";

echo "Status : $status<br>";
if ($status==TRUE)
{
$maj5=mysql_query ("INSERT INTO fini (idpari, idmembre, type, cote, mise, status, details, date) VALUES ('$id_pari_combine', '$idmembre', '3', '$cote', '$mise', '$status', '$details', '$datetime')");
echo "INSERT INTO fini (idpari, idmembre, type, cote, mise, status, details, date) VALUES ($id_pari_combine, $idmembre, 3, $cote, $mise, $status, '$details', $datetime)";
}
Status : 2
INSERT INTO fini (idpari, idmembre, type, cote, mise, status, details, date) VALUES ('781', '448', '3', '2.83', '0.05', '2', ''[les tableaux]'', '2007-06-30 19:22:20')
Mais le problème, c'est que la table "fini" est vide...

Le problème vient de la variable $details qui n'arrive pas a inserer car en changeant en $details="test" le script s'éxécutait normalement....

Le champ détails est un champ text qui peut etre nul.

En testant avec d'autres valeurs, l'insertion de la variable détails avait bien lieu, il a juste du mal à inserer un tableau de 3 lignes, par exemple avec 4 lignes le script fonctionne normalement

Merci

--------------------------------------------------------------------------------------

Edit :

Il n'arrive pas a enregistrer quand $details vaut :

Code : Tout sélectionner

<table width="95%" border="0"> <tr> <td width="50%"> <div align="center"><font color="#333333" size="2" face="Tahoma">5</font></div></td> <td width="25%" rowspan="3"> <div align="center"></div> <div align="center"></div> <div align="center"><font size="2" face="Tahoma">1.25</font></div></td> <td width="25%" rowspan="3"> <div align="center"></div> <div align="center"></div> <div align="center"><strong><font color="#FF0000" size="2" face="Tahoma">Perdu</font></strong></div></td> </tr> <tr> <td><div align="center"><font size="2" face="Tahoma"><strong>Barcelone - Betis Seville</strong></font></div></td> </tr> <tr> <td><div align="center"><font color="#990000" size="2" face="Tahoma">Votre choix : Barcelone</font></div></td> </tr> </table><br><table width="95%" border="0"> <tr> <td width="50%"> <div align="center"><font color="#333333" size="2" face="Tahoma">5</font></div></td> <td width="25%" rowspan="3"> <div align="center"></div> <div align="center"></div> <div align="center"><font size="2" face="Tahoma">1.7</font></div></td> <td width="25%" rowspan="3"> <div align="center"></div> <div align="center"></div> <div align="center"><strong><font color="#006600" size="2" face="Tahoma">Gagné</font></strong></div></td> </tr> <tr> <td><div align="center"><font size="2" face="Tahoma"><strong>FC Valence - Real Saragosse</strong></font></div></td> </tr> <tr> <td><div align="center"><font color="#990000" size="2" face="Tahoma">Votre choix : FC Valence</font></div></td> </tr> </table><br><table width="95%" border="0"> <tr> <td width="50%"> <div align="center"><font color="#333333" size="2" face="Tahoma">32</font></div></td> <td width="25%" rowspan="3"> <div align="center"></div> <div align="center"></div> <div align="center"><font size="2" face="Tahoma">1.33</font></div></td> <td width="25%" rowspan="3"> <div align="center"></div> <div align="center"></div> <div align="center"><strong><font color="#333333" size="2" face="Tahoma">???</font></strong></div></td> </tr> <tr> <td><div align="center"><font size="2" face="Tahoma"><strong>Coupe de l'America 2007</strong></font></div></td> </tr> <tr> <td><div align="center"><font color="#990000" size="2" face="Tahoma">Votre choix : Team Alinghi</font></div></td> </tr>
------------------------------

Mais il arrive a enregistrer quand details vaut :

Code : Tout sélectionner

<table width="95%" border="0"> <tr> <td width="50%"> <div align="center"><font color="#333333" size="2" face="Tahoma">5</font></div></td> <td width="25%" rowspan="3"> <div align="center"></div> <div align="center"></div> <div align="center"><font size="2" face="Tahoma">4</font></div></td> <td width="25%" rowspan="3"> <div align="center"></div> <div align="center"></div> <div align="center"><strong><font color="#333333" size="2" face="Tahoma">???</font></strong></div></td> </tr> <tr> <td><div align="center"><font size="2" face="Tahoma"><strong>Championnat du Monde 2007 (Vainqueur Constructeurs)</strong></font></div></td> </tr> <tr> <td><div align="center"><font color="#990000" size="2" face="Tahoma">Votre choix : Ferrari</font></div></td> </tr> </table><br><table width="95%" border="0"> <tr> <td width="50%"> <div align="center"><font color="#333333" size="2" face="Tahoma">4</font></div></td> <td width="25%" rowspan="3"> <div align="center"></div> <div align="center"></div> <div align="center"><font size="2" face="Tahoma">1.37</font></div></td> <td width="25%" rowspan="3"> <div align="center"></div> <div align="center"></div> <div align="center"><strong><font color="#006600" size="2" face="Tahoma">Gagné</font></strong></div></td> </tr> <tr> <td><div align="center"><font size="2" face="Tahoma"><strong>Manchester United - Sheffield United</strong></font></div></td> </tr> <tr> <td><div align="center"><font color="#990000" size="2" face="Tahoma">Votre choix : Manchester United</font></div></td> </tr> </table><br><table width="95%" border="0"> <tr> <td width="50%"> <div align="center"><font color="#333333" size="2" face="Tahoma">1</font></div></td> <td width="25%" rowspan="3"> <div align="center"></div> <div align="center"></div> <div align="center"><font size="2" face="Tahoma">1.54</font></div></td> <td width="25%" rowspan="3"> <div align="center"></div> <div align="center"></div> <div align="center"><strong><font color="#FF0000" size="2" face="Tahoma">Perdu</font></strong></div></td> </tr> <tr> <td><div align="center"><font size="2" face="Tahoma"><strong>Lyon - Rennes</strong></font></div></td> </tr> <tr> <td><div align="center"><font color="#990000" size="2" face="Tahoma">Votre choix : Lyon</font></div></td> </tr> </table>