Problème requête SQL

Statut
N'est pas ouverte pour d'autres réponses.

Fortytwo

Premium
Inscription
19 Juillet 2014
Messages
87
Réactions
52
Points
5 236
RGCoins
25
Salut tout le monde!

Bon, je poste mon premier message d'aide en programmation :p

Alors voilà, je rencontre une erreur sql :

Fatal error: Uncaught exception 'PDOException' with message '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 ' avertissement.par= 'Liight Man', ban_membres.par= 'Liight Man', message' at line 1'

Voici le script. (J'utilise le pattern Design MVC donc il y auras plusieurs scripts.)

La partie concerné du Modele
PHP:
<?php 
$this->updateAllBDDPlayer=$bdd->prepare("UPDATE
annonce,
avertissements,
ban_membres,
conversations,
messagerie_modo,
modo_avertissement,
modo_hack,
news,
support,
support_reponses,
tchat
SET
annonce.par= :new,
avertissement.par= :new,
ban_membres.par= :new,
messagerie_modo.pseudo_modo= :new,
avertissement_modo.pseudo_modo= :new,
avertissement_modo.donneur= :new,
modo_hack.pseudo_modo= :new,
news.auteur= :new,
support.pseudo = :new,
support_reponses = :new,
tchat.pseudo = :new
WHERE
annonce.par= :joueur,
avertissement.par= :joueur,
ban_membres.par= :joueur,
messagerie_modo.pseudo_modo= :joueur,
avertissement_modo.pseudo_modo= :joueur,
avertissement_modo.donneur= :joueur,
modo_hack.pseudo_modo= :joueur,
news.auteur= :joueur,
support.pseudo = :joueur,
support_reponses = :joueur,
tchat.pseudo = :joueur ");
public function updateAllBDDPlayer($ancienneIdentitePerso, $nouvelleIdentitePerso, $page)
    {
        $this->updateAllBDDPlayer->execute(array(
        ":new"=> $nouvelleIdentitePerso, //nouveau nom de personnage après modif
        ":joueur"=> $ancienneIdentitePerso )); // ancien nom avant modif
        header('Location: index?page='.$page.'');
    }
?>

La partie concerné du Controleur :
PHP:
<?php

if ($verifChangementIdentite != $ancienneIdentitePerso)
    {
        $nouvelleIdentitePerso = $verifChangementIdentite;
           
        $updateAllbdd= $modifier->updateAllBDDPlayer($ancienneIdentitePerso, $nouvelleIdentitePerso, $page);
    }

?>


À savoir que les variables
PHP:
$nouvelleIdentitePerso && $ancienneIdentitePerso
ne sont pas des booléens et ne retourne pas null.

Merci d'avance !
 
Demande a @RGPC | Maxence il pourra peut être t'aider ;)
 
Je sais pas trop mais en SQL, les strings doivent être entourés d'apostrophes : ' et ceci : ` pour les tables et les bases de données.
Ton erreur doit peut-être venir de ça.
 
Demande a @RGPC | Maxence il pourra peut être t'aider ;)
Tu t'es fail dans le tag ^^ Merci quand même :)


J'ai identifié la source du problème.
Tu dis :

MODIFIER les champs annonce, avertissement,ban_membres
PAR
annonce = :new // On modifie la colonne "annonce" par :new
avertissement.par = :new // Sauf que la tu modifie la colonne "avertissement.par" qui n'est pas déclaré au dessus (c'est "avertissement").
ban.membres.par = :new // Même problème, il ne connait pas ban.membres.par, mais ban_membres ;)

Je ne sais pas si je me suis fait comprendre :)
 
Merci vos réponses!
Tu t'es fail dans le tag ^^ Merci quand même :)


J'ai identifié la source du problème.
Tu dis :

MODIFIER les champs annonce, avertissement,ban_membres
PAR
annonce = :new // On modifie la colonne "annonce" par :new
avertissement.par = :new // Sauf que la tu modifie la colonne "avertissement.par" qui n'est pas déclaré au dessus (c'est "avertissement").
ban.membres.par = :new // Même problème, il ne connait pas ban.membres.par, mais ban_membres ;)

Je ne sais pas si je me suis fait comprendre :)

PHP:
$this->updateAllBDDPlayer=$bdd->prepare("UPDATE
annonce.par, 
avertissements.par,
 ban_membres.par, 
messagerie_modo.pseudo_modo, 
modo_avertissement.donneur,
 modo_hack.pseudo_modo, 
news.auteur,
 support.pseudo,
 support_reponses.pseudo,
 tchat.pseudo 

SET 

annonce.par= :new, 
avertissements.par= :new,
 ban_membres.par= :new,
 messagerie_modo.pseudo_modo= :new, 
modo_avertissement.pseudo_modo= :new, 
modo_avertissement.donneur= :new, 
modo_hack.pseudo_modo= :new, 
news.auteur= :new, 
support.pseudo = :new, 
support_reponses.pseudo = :new, 
tchat.pseudo = :new 

WHERE
 annonce.par= :joueur, 
avertissements.par= :joueur, 
ban_membres.par= :joueur,
messagerie_modo.pseudo_modo= :joueur, 
modo_avertissement.pseudo_modo= :joueur, 
modo_avertissement.donneur= :joueur, 
modo_hack.pseudo_modo= :joueur,
news.auteur= :joueur, 
support.pseudo = :joueur,
support_reponses.pseudo = :joueur,
tchat.pseudo = :joueur ");

Et ça donne le même résultat :x
 
Statut
N'est pas ouverte pour d'autres réponses.
Retour
Haut