Précédent   Forum des professionnels en informatique > PHP > PHP & SGBD > PDO
PDO Forum d'entraide sur PDO (PHP Data Objects) : pilote générique de bases de données avec PHP. Avant de poster -> FAQ PDO et Cours PDO
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 27/02/2011, 13h57   #1
Invité régulier
 
Adel Echi
Inscription : juillet 2010
Messages : 30
Détails du profil
Informations personnelles :
Nom : Adel Echi
Localisation : Tunisie

Informations forums :
Inscription : juillet 2010
Messages : 30
Points : 6
Points : 6
Par défaut Erreur de syntaxe: update set where

salut tous le monde,
L’erreur m’a perdu beaucoup de temps , svp Aide-moi pour le corriger
voila l'erreur

Citation:
Fatal error: Uncaught exception 'PDOException' with message 'SQLSTATE[42000]: Syntax error or access violation: 1064 Erreur de syntaxe près de 'WHERE id ='3'' à la ligne 5' in F:\Program Files\EasyPHP-5.3.3\www\1er-example\forum\class_UserTable.php:25 Stack trace: #0 F:\Program Files\EasyPHP-5.3.3\www\1er-example\forum\class_UserTable.php(25): PDOStatement->execute(Array) #1 F:\Program Files\EasyPHP-5.3.3\www\1er-example\forum\main.php(9): UserTable->update('adel', 'g', 3) #2 {main} thrown in F:\Program Files\EasyPHP-5.3.3\www\1er-example\forum\class_UserTable.php on line 25
table étuliser etudiant (nom,sex ,id)

contenu de fichier "class_UserTable.php"
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
29
<?php
class UserTable
{
 
        private $update;
 
 
      public function __construct($db)
      {
 
            $this->update = $db->prepare(
            "UPDATE etudiant 
            SET 
                nom = :nom,
                sex = :sex,
            WHERE id =:id");
 
 
      } 
 
 
       public function update($nom, $sex, $id)
      {
                        $this->update->execute( 
/*ligne 25*/        array(':nom' => $nom,':sex'=>$sex,'id'=> $id));/*ligne 25*/
                        return $this->update->rowCount();
      }
 
}
contenu de fichier "class_MyPDO.php"
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<?php
class MyPDO extends PDO
{
      public function __construct($dsn, $user=NULL, $password=NULL)
      {
            parent::__construct($dsn, $user, $password);
            $this->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
      }
      public function prepare($sql, $options=NULL)
      {
            $statement = parent::prepare($sql);
            if(strpos(strtoupper($sql), 'SELECT') === 0) //requête "SELECT"
            {
                  $statement->setFetchMode(PDO::FETCH_ASSOC);
            }
            return $statement;
      }
}
?>
contenu de fichier "main.php"
Code :
1
2
3
4
5
6
7
8
9
10
<?php 
require_once 'class_UserTable.php';
require_once 'class_MyPDO.php';
 
$db = new MyPDO('mysql:host=localhost;dbname=all', 'root', '');  
 
               $userTable = new UserTable($db);
 
/*ligne 9*/echo"le nombre de lignes modifier=".$userTable->update('adel','g',3);
?>
zamoud est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/02/2011, 14h46   #2
Membre émérite
 
Avatar de vorace
 
Homme
Développeur
Inscription : août 2010
Messages : 586
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Meurthe et Moselle (Lorraine)

Informations professionnelles :
Activité : Développeur

Informations forums :
Inscription : août 2010
Messages : 586
Points : 859
Points : 859
dans ta requete set :
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
29
<?php
class UserTable
{
 
        private $update;
 
 
      public function __construct($db)
      {
 
            $this->update = $db->prepare(
            "UPDATE etudiant 
            SET 
                nom = :nom,
                sex = :sex //tu avais une virgule ici
            WHERE id =:id");
 
 
      } 
 
 
       public function update($nom, $sex, $id)
      {
                        $this->update->execute( 
/*ligne 25*/        array(':nom' => $nom,':sex'=>$sex,'id'=> $id));/*ligne 25*/
                        return $this->update->rowCount();
      }
 
}
enlèves la virgule après ":sex"
__________________
Développeur informatique contrarié...
vorace est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/02/2011, 16h53   #3
Membre chevronné
 
Inscription : juin 2004
Messages : 747
Détails du profil
Informations personnelles :
Âge : 28
Localisation : France, Loire Atlantique (Pays de la Loire)

Informations forums :
Inscription : juin 2004
Messages : 747
Points : 741
Points : 741
Egalement quand tu passes tes valeurs de le "execute", il manque les ':' devant 'id'...
__________________
  • Mon blog PHP : http://blog.alterphp.com
  • "Peace cannot be kept by force, it can only be achieved by Understanding" -- Albert Einstein
pc.bertineau est déconnecté   Envoyer un message privé Réponse avec citation 01
Vieux 27/02/2011, 18h48   #4
Modérateur
 
Inscription : septembre 2010
Messages : 7 101
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 7 101
Points : 8 465
Points : 8 465
Citation:
Envoyé par pc.bertineau Voir le message
Egalement quand tu passes tes valeurs de le "execute", il manque les ':' devant 'id'...
c'est pas obligatoire ça, c'est même le but premier de ce genre de requete préparée
__________________
http://blog.stealth35.com/
stealth35 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/02/2011, 01h18   #5
Invité régulier
 
Adel Echi
Inscription : juillet 2010
Messages : 30
Détails du profil
Informations personnelles :
Nom : Adel Echi
Localisation : Tunisie

Informations forums :
Inscription : juillet 2010
Messages : 30
Points : 6
Points : 6
Par défaut merci

Oui c'est la virgule
stealth35
vorace
merci beaucoup
zamoud est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/02/2011, 09h58   #6
Membre chevronné
 
Inscription : juin 2004
Messages : 747
Détails du profil
Informations personnelles :
Âge : 28
Localisation : France, Loire Atlantique (Pays de la Loire)

Informations forums :
Inscription : juin 2004
Messages : 747
Points : 741
Points : 741
Citation:
Envoyé par stealth35 Voir le message
c'est pas obligatoire ça, c'est même le but premier de ce genre de requete préparée
Je te crois sur parole stealth35 mais je comprends pas... PDO ne binde pas en fonction des clés du tableau passé en paramètre ?
Et "sur le but de ce genre de requête" je vois encore moins
__________________
  • Mon blog PHP : http://blog.alterphp.com
  • "Peace cannot be kept by force, it can only be achieved by Understanding" -- Albert Einstein
pc.bertineau est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/02/2011, 10h26   #7
Modérateur
 
Inscription : septembre 2010
Messages : 7 101
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 7 101
Points : 8 465
Points : 8 465
Citation:
Envoyé par pc.bertineau Voir le message
Je te crois sur parole stealth35 mais je comprends pas... PDO ne binde pas en fonction des clés du tableau passé en paramètre ?
Et "sur le but de ce genre de requête" je vois encore moins
si mais c'est parce que c'est :id que la clé est :id,
ce type de requête n'existe pas vraiment, une requête préparée c'est avec les "?", les clients introduisent les :param pour faciliter l'interaction avec les object/array.
__________________
http://blog.stealth35.com/
stealth35 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/02/2011, 11h20   #8
Membre habitué
 
Avatar de thebarbarius
 
Inscription : octobre 2008
Messages : 745
Détails du profil
Informations forums :
Inscription : octobre 2008
Messages : 745
Points : 139
Points : 139
Fais une requete toute simple par commencé.

Ensuite si sa marche, tu rajoutes des choses, c'est le meilleur moyen de debugger je pense
thebarbarius est déconnecté   Envoyer un message privé Réponse avec citation 01
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 17h21.


 
 
 
 
Partenaires

Hébergement Web