Précédent   Forum des professionnels en informatique > Bases de données > MySQL > Requêtes
Requêtes Forum d'entraide sur les requêtes MySQL
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 14/04/2011, 14h38   #1
Invité de passage
 
Hamza TERIAKI
Inscription : avril 2010
Messages : 3
Détails du profil
Informations personnelles :
Nom : Hamza TERIAKI

Informations forums :
Inscription : avril 2010
Messages : 3
Points : 0
Points : 0
Par défaut Problème avec un update

Bonjour tout le monde, j'ai un problème avec mon update au niveau du champ nom grade quand je choisi dans la liste déroulement nom grade=Professeur d'ensignement Supérieur le serveur affiche l'erreur suivante :
Citation:
Erreur : SQLSTATE[42000]: Syntax error or access violation: 1064 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 'ensignament Supérieur' , datetravail='2007-10-13' , dureetravail='10' ' at line 3
mais quand je utilise dans la liste déroulement autre choix par expemle nom grade= Maître de Conférences A la requête marche
voila mon code :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
<?php
  try
  {
  $pdo_options[PDO::ATTR_ERRMODE] = PDO::ERRMODE_EXCEPTION;
    $bdd = new PDO('mysql:host=localhost;dbname=test', 'root', '', $pdo_options);
   $matricule=$_POST["matricule"];
   $nom=$_POST["nom"];  
   $prenom=$_POST["prenom"];
   $temps=$_POST["temps"];
   $tache=$_POST["tache"];
   $nomgrade=$_POST["nomgrade"];
   $datetravail=$_POST["datetravail"];
   $dureetravail=$_POST["dureetravail"]; 
   $req = $bdd->prepare ("UPDATE chercheur,grade SET nom='".$nom."' ,prenom='".$prenom."' ,
                               temps='".$temps."' , tache='".$tache."'  ,
							   nomgrade='".$nomgrade."' , datetravail='".$datetravail."' , dureetravail='".$dureetravail."' 
							   WHERE chercheur.matricule='".$matricule."' && grade.matricule='".$matricule."' ");  
  $req->execute(array($_POST['matricule'],$_POST['nom'],$_POST['prenom'],$_POST['temps'],$_POST['tache'],
                      $_POST['nomgrade'],$_POST['datetravail'],$_POST['dureetravail']));  
 
    // Redirection du visiteur vers la page du minichat
    header('Location: bienmodifier.php');
    }
	catch(Exception $e)
{
    die('Erreur : '.$e->getMessage());
}
?>
hamza_java est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/04/2011, 15h25   #2
Membre Expert
 
Avatar de Nudger
 
Homme Thomas Arnaud
Directeur de projet
Inscription : octobre 2010
Messages : 452
Détails du profil
Informations personnelles :
Nom : Homme Thomas Arnaud
Âge : 36
Localisation : France, Paris (Île de France)

Informations professionnelles :
Activité : Directeur de projet
Secteur : High Tech - Produits et services télécom et Internet

Informations forums :
Inscription : octobre 2010
Messages : 452
Points : 1 012
Points : 1 012
Envoyer un message via Skype™ à Nudger
Bonjour,

Manifestement, ça vient du paramètre nomgrade de la requête POST qui est collé directement dans la requête SQL.
Il s'agit peut-être d'un apostrophe dans le paramètre du coup la requête SQL est bancale.
Il faudrait nous fournir la valeur du texte SQL en entier à l'exécution plutôt que le code qui la génère pour savoir ce qui ne va pas.

Par ailleurs, c'est très dangereux de générer les requêtes SQL de cette manière car ça laisse la porte ouverte à de l'injection SQL.
__________________
www.nudge.org Surveillez et optimisez vos applications Java
Nudger est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/04/2011, 01h59   #3
Membre Expert
 
Homme Eric Dureuil
Développeur informatique
Inscription : avril 2011
Messages : 843
Détails du profil
Informations personnelles :
Nom : Homme Eric Dureuil
Localisation : France, Isère (Rhône Alpes)

Informations professionnelles :
Activité : Développeur informatique
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : avril 2011
Messages : 843
Points : 1 318
Points : 1 318
Oui tu devrais échapper toutes les valeur passées en POST à ton script php, déjà ça éliminerais les problèmes de " ou de ' intempestifs. Y a tout un tas de fonctions php pour ça, ce qui dépend d'ailleurs de ta configuration php pour savoir ce qui est automatiquement activé ou pas...

Ne jamais faire confiance à ce qui vient d'un formulaire!!!! Même envoyé par méthode post.
ericd69 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 01h11.


 
 
 
 
Partenaires

Hébergement Web