Souci reqête update sql
Résolu
Caroline
-
Caroline -
Caroline -
Bonjour,
Je fais appel à vous car je rencontre un petit souci dans ma requête sql et je ne sais pas exactement ou, je voudrais faire un update des informations se trouvant dans ma base de donnée mais, plus précisément dans ma table actu.
voilà l'erreur que cela me donne quand je valide le formulaire et que le formulaire est rediriger vers ce code php pour l'entré en base.
(j'ai mis en base une ligne test pour tester avant)
merci de votre aide
Je fais appel à vous car je rencontre un petit souci dans ma requête sql et je ne sais pas exactement ou, je voudrais faire un update des informations se trouvant dans ma base de donnée mais, plus précisément dans ma table actu.
case 'section2': echo //récupération des valeurs des champs: $jour = mysql_real_escape_string($_POST["jour"]); $url = mysql_real_escape_string($_POST["url"]); $description = mysql_real_escape_string($_POST["description"]); $format = mysql_real_escape_string($_POST["format"]); $auteur = mysql_real_escape_string($_POST["auteur"]); if(isset($_POST["jour"]) AND isset($_POST["url"]) AND ($_POST["description"]) AND ($_POST["format"]) AND ($_POST["auteur"])) { //création de la requête SQL: $sql="UPDATE actu (jour, url, description, format, auteur) VALUES ('$jour', '$url', '$description', '$format', '$auteur') "; //exécution de la requête SQL: $requete = mysql_query($sql, $cnx) or die( mysql_error() ) ; //affichage des résultats, pour savoir si l'insertion a marchée: header("Location: ../espace.php?section2=update"); } else { header("Location: ../espace.php?section2=erreur"); }; break;
voilà l'erreur que cela me donne quand je valide le formulaire et que le formulaire est rediriger vers ce code php pour l'entré en base.
rien2You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '('rien2', 'rien', 'rien', 'rien', 'test')' at line 1
(j'ai mis en base une ligne test pour tester avant)
merci de votre aide
A voir également:
- Souci reqête update sql
- Windows update bloqué - Guide
- Winget update - Guide
- Asus live update - Télécharger - Utilitaires
- Wsus offline update - Télécharger - Systèmes d'exploitation
- Nettoyage windows update - Guide
8 réponses
Salut,
Tu confonds insert et update, update s'écrit comme ceci :
UPDATE table
SET champ = 'valeur'
et insert :
INSERT INTO table
VALUES ...
Tu confonds insert et update, update s'écrit comme ceci :
UPDATE table
SET champ = 'valeur'
et insert :
INSERT INTO table
VALUES ...
Pas de WHERE, donc tu vas modifier toute ta table d'un seul coup quand ça marchera.
Si tu as toujours ton "or die()" et qu'il n'y a pas de message d'erreur, c'est que ta requête n'est pas exécutée. Ou que tu vérifies mal le contenu de ta table.
Peux-tu faire un 'echo $sql;' juste après
$requete = mysql_query($sql, $cnx) or die( mysql_error() ) ;
pour vérifier que tu y passes bien ?
Si tu as toujours ton "or die()" et qu'il n'y a pas de message d'erreur, c'est que ta requête n'est pas exécutée. Ou que tu vérifies mal le contenu de ta table.
Peux-tu faire un 'echo $sql;' juste après
$requete = mysql_query($sql, $cnx) or die( mysql_error() ) ;
pour vérifier que tu y passes bien ?
Essayes ça stp :
NB : Pour le WHERE j'ai pensé que tu devais sûrment utiliser l'ID de ta table...
Sinon.. il faudra que tu changes.
PS: Merci de nous coller le résultat de ce qui s'affiche sur ta page.
EDIT : Ajout de debug !
Cordialement,
Jordane
<?php // Reporte toutes les erreurs PHP (Voir l'historique des modifications) error_reporting(E_ALL); //Connexion à la BDD $cnx = mysql_connect( "localhost", "user", "password" ) or die( "<center>Impossible de se connecter au serveur</center><br>" ); $db= mysql_select_db( "DBActu" ) or die( "<center>Impossible de se connecter à la base de données</center><br>" ); $action=isset($_GET['action'])?$_GET['action']:NULL; //récupération des valeurs des champs: $id = isset($_POST["id"])?mysql_real_escape_string($_POST["id"]):NULL; $jour = isset($_POST["jour"])?mysql_real_escape_string($_POST["jour"]):''; $url = isset($_POST["url"])?mysql_real_escape_string($_POST["url"]):''; $description = isset($_POST["description"])?mysql_real_escape_string($_POST["description"]):''; $format = isset($_POST["format"])?mysql_real_escape_string($_POST["format"]):''; $auteur = isset($_POST["auteur"])?mysql_real_escape_string($_POST["auteur"]):''; switch ($action){ case 'section2': if(isset($_POST["jour"]) AND isset($_POST["url"]) AND ($_POST["description"]) AND ($_POST["format"]) AND ($_POST["auteur"])) { //création de la requête SQL: $sql="UPDATE actu SET id='$id' ,jour='$jour' ,url='$url' ,description='$description' ,format='$format' ,auteur='$auteur' WHERE id='$id'"; //exécution de la requête SQL: $requete = mysql_query($sql, $cnx) or die( mysql_error() ) ; //affichage des résultats, pour savoir si l'insertion a marchée: //le temps des tests: echo $sql; //header("Location: ../espace.php?section2=update"); } else { //header("Location: ../espace.php?section2=erreur"); print_r($_POST); }; break; default : //header("Location: ../espace.php"); echo " ERREUR : Variable ACTION inconnue "; print_r($_GET); break; }
NB : Pour le WHERE j'ai pensé que tu devais sûrment utiliser l'ID de ta table...
Sinon.. il faudra que tu changes.
PS: Merci de nous coller le résultat de ce qui s'affiche sur ta page.
EDIT : Ajout de debug !
Cordialement,
Jordane
C'est un update pour mettre a jour des informations déjà existante donc je doit faire comme ceci:
ou ceci:
$sql="UPDATE actu (jour, url, description, format, auteur) SET ('$jour', '$url', '$description', '$format', '$auteur') ";
ou ceci:
$sql="UPDATE actu SET jour='$jour', url='$url', description='$description', format='$format', auteur='$auteur' ";
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
La syntaxe du UPDATE, comme te l'a dit cloridee, est UPDATE table
SET champ = 'valeur' , etc. donc ton deuxième exemple.
Mais attention, tu as une parenthèse en trop et SURTOUT tu n'as pas de WHERE. Comment veux-tu que mysql devine quelle ligne tu veux modifier ? Il ne devinera pas, il modifiera TOUTE ta table.
Il faudrait aussi que tu te rensignes sur mysqli_ et PDO, car les fonctions mysql_ que tu utilises sont obsolètes, mais c'est une autre histoire.
SET champ = 'valeur' , etc. donc ton deuxième exemple.
Mais attention, tu as une parenthèse en trop et SURTOUT tu n'as pas de WHERE. Comment veux-tu que mysql devine quelle ligne tu veux modifier ? Il ne devinera pas, il modifiera TOUTE ta table.
Il faudrait aussi que tu te rensignes sur mysqli_ et PDO, car les fonctions mysql_ que tu utilises sont obsolètes, mais c'est une autre histoire.
Bonjour,
à première vue la requête me semble bonne (maintenant)..
Le souci se situe surement ailleurs dans ton code.
Pourrais tu reposter l'intégralité de ton code actuel ?
à première vue la requête me semble bonne (maintenant)..
Le souci se situe surement ailleurs dans ton code.
Pourrais tu reposter l'intégralité de ton code actuel ?
Oui voici le code :
$cnx = mysql_connect( "localhost", "user", "password" ) or die( "<center>Impossible de se connecter au serveur</center><br>" ); $db= mysql_select_db( "DBActu" ) or die( "<center>Impossible de se connecter à la base de données</center><br>" ); $action=$_GET['action']; switch ($action){ case 'section2': echo //récupération des valeurs des champs: $id = mysql_real_escape_string($_POST["id"]); $jour = mysql_real_escape_string($_POST["jour"]); $url = mysql_real_escape_string($_POST["url"]); $description = mysql_real_escape_string($_POST["description"]); $format = mysql_real_escape_string($_POST["format"]); $auteur = mysql_real_escape_string($_POST["auteur"]); if(isset($_POST["jour"]) AND isset($_POST["url"]) AND ($_POST["description"]) AND ($_POST["format"]) AND ($_POST["auteur"])) { //création de la requête SQL: $sql="UPDATE actu SET id='$id',jour='$jour',url='$url',description='$description',format='$format', auteur='$auteur'"; //exécution de la requête SQL: $requete = mysql_query($sql, $cnx) or die( mysql_error() ) ; //affichage des résultats, pour savoir si l'insertion a marchée: header("Location: ../espace.php?section2=update"); } else { header("Location: ../espace.php?section2=erreur"); }; break; default : header("Location: ../espace.php"); break; }
voilà le contenu entier:
$cnx = mysql_connect( "localhost", "user", "password" ) or die( "<center>Impossible de se connecter au serveur</center><br>" ); $db= mysql_select_db( "DBActu" ) or die( "<center>Impossible de se connecter à la base de données</center><br>" ); $action=$_GET['action']; switch ($action){ case 'section2': echo //récupération des valeurs des champs: $id = mysql_real_escape_string($_POST["id"]); $jour = mysql_real_escape_string($_POST["jour"]); $url = mysql_real_escape_string($_POST["url"]); $description = mysql_real_escape_string($_POST["description"]); $format = mysql_real_escape_string($_POST["format"]); $auteur = mysql_real_escape_string($_POST["auteur"]); if(isset($_POST["jour"]) AND isset($_POST["url"]) AND ($_POST["description"]) AND ($_POST["format"]) AND ($_POST["auteur"])) { //création de la requête SQL: $sql="UPDATE actu SET id='$id',jour='$jour',url='$url',description='$description',format='$format', auteur='$auteur'"; //exécution de la requête SQL: $requete = mysql_query($sql, $cnx) or die( mysql_error() ) ; //affichage des résultats, pour savoir si l'insertion a marchée: header("Location: ../espace.php?section2=update"); } else { header("Location: ../espace.php?section2=erreur"); }; break; default : header("Location: ../espace.php"); break; }
Voilà comment ça se présente coté formulaire après je ne sais pas si cela peut aider :
$cnx = mysql_connect( "localhost", "user", "password" ) ; //sélection de la base de données: $db = mysql_select_db( "DBActu" ) ; //récupération de la variable d'URL, //qui va nous permettre de savoir quel enregistrement modifier $id = $_GET["Info"] ; //requête SQL: $sql = "SELECT id, jour, description, url, format, auteur FROM actu WHERE id = ".$id ; mysql_query("SET NAMES utf8"); //exécution de la requête: $requete = mysql_query( $sql, $cnx ) ; //affichage des données: if( $result = mysql_fetch_object( $requete ) ) { echo '<form name="insertion" action="update.php?action=section2" method="POST">'; echo '<input type="hidden" name="id" value="'.$id.'">'; echo '<label for="jour">DATE</label>'; echo '<input type="text" id="jour" class="jour" name="jour" value="'.$result->jour.'"">'; echo '<br/>'; echo '<label for="url">URL</label>'; echo '<input type="text" id="url" class="url" name="url" value="'.$result->url.'">'; echo '<br/>'; echo '<label for="description">DESCRIPTION</label>'; echo '<input type="text" id="description" class="description" name="description" value="'.$result->description.'">'; echo '<br/>'; echo '<label for="format">FORMAT DU FICHIER </label>'; echo '<select id="format" name="format" class="format">'; echo '<option>'.$result->format.'</option>'; echo '<option>PDF</option>'; echo '<option>DOC</option>'; echo '<option>TXT</option>'; echo '</select>'; echo '<br/>'; echo '<label for="auteur">AUTEUR</label>'; echo '<input type="text" class="auteur" id="auteur" name="auteur" value="'.$result->auteur.'">'; echo '<br/>'; echo '<input type="submit" name="submit" value="Enregistrer" title="Enregistrement des paramètres" class="btn btn-primary active"/>'; echo '</form>'; echo '<br/>'; echo '<br/>'; echo '</form>'; }