Une erreur PHP avec un INSERT

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 : Une erreur PHP avec un INSERT

INSERT

par harry67 » 29 juin 2005, 14:03

Tout d'abord, merci d'avoir corrigé mon script, il fonctionne sans bug mais lorsque que je vais dans pHP my admin, rien ne s'est inseré dans la table. Je précise que cela m'arrive très souvent. Pourquoi?

par Cyrano » 29 juin 2005, 13:51

De l'utilisation des guillemets et des apostrophes dans tes définitions de requêtes. Tu avais bien commencé jusque là, mais après tu as carrément zappé le problème en metant juste des apostrophes. Proposition de correction:
<?php
/*Inscription d'une personne*/
$host="***********";
$user="************";
$mpasse="**********";
$database="***********";

$connexion = mysql_connect("$host", "$user", "$mpasse")
or die ("Connexion à la base impossible");

$db = mysql_select_db($database)
or die("Sélection de la base impossible");

if ($_POST[pseudo] == "")
{
    header ("Location: http://hpotter.club.fr/inscription_2.htm");
}
elseif ($_POST[mpasse] == "")
{
    header ("Location: http://ronfcehp.free.fr/contact.htm");
}
elseif ($_POST[confmpasse] == "")
{
    header ("Location: http://ronfcehp.free.fr/articles/articles.htm");
}
elseif ($_POST[email] == "")
{
    header ("Location: http://ronfcehp.free.fr/posteznews.php");
}
elseif ($_POST[agree] == "")
{
    header ("Location: http://ronfcehp.free.fr/accesgrimoire.htm");
}
elseif ($_POST[code] <> "KC585LV")
{
    header ("Location: http://ronfcehp.free.fr/autreslivres/autreslivres.htm");
}
else
{
    $code="ok";
}
$sql = "SELECT login FROM membres
          WHERE login='".mysql_real_escape_string($_POST[pseudo])."'";
$result = mysql_query($sql)
or die("Impossible d'éxécuter la requête1");
$num = mysql_num_rows($result);
if ($num == 1)
{
    header ("Location: http://hpotter.club.fr");
}
else
{
    $login="ok";
}

$sql = "SELECT mp FROM membres
          WHERE mp='".mysql_real_escape_string($_POST[mpasse])."'";
$result = mysql_query($sql)
or die("Impossible d'éxécuter la requête2");
$num = mysql_num_rows($result);
if ($num == 1)
{
    header ("Location: http://www.poudlard.org/article38.html");
}
else
{
    $passe="ok";
}

$sql = "SELECT mail FROM membres
          WHERE mail='".mysql_real_escape_string($_POST[mail])."'";
$result = mysql_query($sql)
or die("Impossible d'éxécuter la requête3");
$num = mysql_num_rows($result);
if ($num == 1)
{
    header ("Location: http://ronfcehp.free.fr/fanarts/fanarts.htm");
}
else
{
    $mail="ok";
}

if ($_POST[mpasse] == $_POST[confmpasse])
{
    $mp="ok";
}
else

{
    header ("Location: http://www.phpfrance.com/forums/voir_sujet-5066.php");
}

$sql1 = "INSERT INTO membres (login, mp, maison)"
      . " VALUES('".$_POST[pseudo]."','".$_POST[mpasse]."','".$_POST[maison]."')";
$result = mysql_query($sql)
or die ("Erreur d'insertion de données dans la base");

$sql2 = "INSERT INTO mailto (login,mail,message,sujet,prior)"
      . " VALUES('".$_POST[pseudo]."','".$_POST[mailto]."','Nous vous souhaitons bienvenue sur l'école virtuelle du Chemin de Traverse'),'Bienvenue','moyenne')";
$result2 = mysql_query($sql)
or die ("Erreur d'insertion des données dans la base");


$sql3 = "INSERT INTO blog (login)"
      . " VALUES('".$_POST[pseudo]."')";
$result3 = mysql_query($sql)
or die ("Erreur d'insertion des données dans la base");

$sql = "INSERT INTO sac (login)"
     . " VALUES('".$_POST[pseudo]."')";
$result = mysql_query($sql)
or die ("Erreur d'insertion des données dans la base");

$dest = $_POST[mailto];
$sujet="Inscription école virtuelle";
$corps="************le message******************";

$de="from: [email protected]";
mail($dest, $sujet, $corps, $de)
?>

par zeus » 29 juin 2005, 13:46

Je vais te donner UN conseils de débuggage :

lit le message d'erreur

Il te dit qu'il y a une variable inattendue à la ligne 79

tu vas à la ligne 79 et tu te rend compte que ta concaténation est fausse vu qu'il manque les .
$sql1 = 'INSERT INTO membres (login, mp, maison)'
        . ' VALUES("'.$_POST[pseudo].'","'.$_POST[mpasse].'","'.$_POST[maison].'")';

Une erreur PHP avec un INSERT

par harry67 » 29 juin 2005, 13:43

Bonjours, voici un script d'inscription d'un membre. Il vérifie que tous les champs ont bien été rempli et insère les données dans la base. Mais lorsque je l'éxécute, il me donne cette erreur :
Parse error: syntax error, unexpected T_VARIABLE in /inscription.php on line 79

Voici mon script : (les url d'erreurs sont à titre d'exemple)
<?php
/*Inscription d'une personne*/ 
$host="***********";
$user="************";
$mpasse="**********";
$database="***********";

$connexion = mysql_connect("$host", "$user", "$mpasse") 
or die ("Connexion à la base impossible"); 

$db = mysql_select_db($database) 
or die("Sélection de la base impossible"); 

if ($_POST[pseudo] == "")
{ header ("Location: http://hpotter.club.fr/inscription_2.htm");
} 
elseif ($_POST[mpasse] == "")
{ header ("Location: http://ronfcehp.free.fr/contact.htm");
} 
elseif ($_POST[confmpasse] == "")
{ header ("Location: http://ronfcehp.free.fr/articles/articles.htm");
} 
elseif ($_POST[email] == "")
{ header ("Location: http://ronfcehp.free.fr/posteznews.php");
} 
elseif ($_POST[agree] == "")
{ header ("Location: http://ronfcehp.free.fr/accesgrimoire.htm");
} 
elseif ($_POST[code] <> "KC585LV")
{ header ("Location: http://ronfcehp.free.fr/autreslivres/autreslivres.htm");
}
else 
{ $code="ok";
}
$sql = "SELECT login FROM membres
          WHERE login='".mysql_real_escape_string($_POST[pseudo])."'";
$result = mysql_query($sql)
          or die("Impossible d'éxécuter la requête1");
$num = mysql_num_rows($result); 
if ($num == 1)
{ header ("Location: http://hpotter.club.fr");
} 
else
{ $login="ok";
}

$sql = "SELECT mp FROM membres
          WHERE mp='".mysql_real_escape_string($_POST[mpasse])."'";
$result = mysql_query($sql)
          or die("Impossible d'éxécuter la requête2");
$num = mysql_num_rows($result); 
if ($num == 1)
{ header ("Location: http://www.poudlard.org/article38.html");
} 
else
{ $passe="ok";
} 

$sql = "SELECT mail FROM membres
          WHERE mail='".mysql_real_escape_string($_POST[mail])."'";
$result = mysql_query($sql)
          or die("Impossible d'éxécuter la requête3");
$num = mysql_num_rows($result);
if ($num == 1)
{ header ("Location: http://ronfcehp.free.fr/fanarts/fanarts.htm");
} 
else
{ $mail="ok";
} 

if ($_POST[mpasse] == $_POST[confmpasse])
{ $mp="ok";
}
else 
{ header ("Location: http://www.phpfrance.com/forums/voir_sujet-5066.php");
} 

$sql1 = 'INSERT INTO membres (login, mp, maison)'
        . ' VALUES('$_POST[pseudo]','$_POST[mpasse]','$_POST[maison]')';
$result = mysql_query($sql)
or die ("Erreur d'insertion de données dans la base");

$sql2 = 'INSERT INTO mailto (login,mail,message,sujet,prior)'
        . ' VALUES('$_POST[pseudo]','$_POST[mailto]','Nous vous souhaitons bienvenue sur l'école virtuelle du Chemin de Traverse'),'Bienvenue','moyenne')';
$result2 = mysql_query($sql)
or die ("Erreur d'insertion des données dans la base");


$sql3 = 'INSERT INTO blog (login)'
        . ' VALUES('$_POST[pseudo]')';
$result3 = mysql_query($sql)
or die ("Erreur d'insertion des données dans la base");

$sql = 'INSERT INTO sac (login)'
        . ' VALUES('$_POST[pseudo]')';
$result = mysql_query($sql)
or die ("Erreur d'insertion des données dans la base");

          $dest='$_POST[mailto]';
          $sujet="Inscription école virtuelle";
          $corps="************le message******************";

          $de="from: [email protected]"; 
          mail($dest, $sujet, $corps, $de) 


?>
Merci de me dire où se trouve l'erreur.