IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PHP & Base de données Discussion :

SQLSTATE[42000]: Syntax error or access violation: 1064


Sujet :

PHP & Base de données

  1. #1
    Membre à l'essai
    Femme Profil pro
    Webmaster
    Inscrit en
    Octobre 2015
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 27
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Octobre 2015
    Messages : 16
    Points : 11
    Points
    11
    Par défaut SQLSTATE[42000]: Syntax error or access violation: 1064
    Bonjour,

    J'ai fais un système de connexion pour mes membres, celui-ci fonctionner parfaitement mais maintenant, il fais des siennes.
    L'erreur:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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 'Key = '****'' at line 1' in /var/www/html/ucp/system/mysql.php:38 Stack trace: #0 /var/www/html/ucp/system/mysql.php(38): PDO->query('SELECT * FROM p...') #1 /var/www/html/ucp/system/loggin.php(10): mysqlfunctions->myQuery('SELECT * FROM p...') #2 {main}
    Je n'ai pas toucher au fichiers mentionné et c'est bien cela le problème..
    Voilà la partie de code de la page qui pose problème:


    Mysql.php
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    <?php
        class mysqlfunctions {
     
            var 
                $isConnected = false,
                $ConnectionError = false,
                $pdo = null
            ;
            const dns   = "mysql:host=localhost;dbname=serveur;charset=utf8";
            const user  = "root";
            const pw    = "*****";
            public function __construct () 
            {
                try {
                    $this->PDO              = new PDO( mysqlfunctions::dns , mysqlfunctions::user , mysqlfunctions::pw ,array(PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION));
                    $this->isConnected      = true;
                }
                catch ( PDOException $ex ) {
                    $this->isConnected      = false;
                    $this->ConnectionError  = $ex;
                    die ( $ex ) ;
                }
            }
            public function myQuery ( $query , $value = null)
            {
                if ( !$value )
                    $result = $this->PDO->query ( $query ) ;
                else
                    $result = $this->PDO->query ( $query , $value ) ;
                try {
                    return $result;
                }
                catch ( PDOException $ex ){
                    return $ex;
                }
            }
        }
        error_reporting ( E_ALL ) ;
        ini_set ( 'display_errors', 1 ) ;
    ?>
    loggin.php:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    30
    <?php
    	include ( 'mysql.php' ) ;
    	include ( 'config.php') ;
    	if ( isset ( $_POST['username'] ) AND isset ( $_POST['pw'] ) )
    	{
    		$mysql 			=	new mysqlfunctions();
    		$user 			=	addslashes ( $_POST['username'] ) ;
    		$pw 			=	addslashes ( $_POST['pw'] ) ;
    		try {
    			$querys 	= 	$mysql->myQuery ( "SELECT * FROM ".$userDB." WHERE ".$nameDB." = '".$user."' AND ".$pwDB." = '".$pw."'" ) ;
    		}
    		catch ( PDOException $ex ) {
    			die ( $ex ) ;
    		}
    		if ( $querys )
    		{
    			if ( $querys->rowCount() != 0 )
    			{
    				foreach ( $querys as $row )
    				{
    					$_SESSION['inSystem'] 		= $row [ $selectBy ];
    				}
    				header ( "location:../index.php" ) ;
    			}
    			else header ( "location:../index.php?act=errorNoAccount" ) ;
    		}
    		else die ( "mySQL ERROR" ) ;
    	}
    	else header ( "location:../index.php?act=errorFields" ) ;
    ?>
    Que faire?
    Cordialement.

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    D'ou vient le "Key" qui apparait dans l'erreur ?

    Au passage, on n'utilise pas addslashes pour echapper des données en PDO mais une requête préparée.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Membre à l'essai
    Femme Profil pro
    Webmaster
    Inscrit en
    Octobre 2015
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 27
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Octobre 2015
    Messages : 16
    Points : 11
    Points
    11
    Par défaut
    Citation Envoyé par sabotage Voir le message
    D'ou vient le "Key" qui apparait dans l'erreur ?

    Au passage, on n'utilise pas addslashes pour echapper des données en PDO mais une requête préparée.
    Bonjour Sabotage,

    ".$pwDB." correspond à "Key" qui est défini dans le fichier config.php (c'est dans ce fichier ou il y à toutes les variables pour les requêtes SQL)
    Concernant addslashes, c'est corriger et et sa ne résout toujours pas le problème (normal :s)

    Franchement je ne comprend pas, je n'ai pas toucher au fichiers mentionné.. Surement une de mes lignes sur un de mes fichier qui fais cela..

  4. #4
    Membre à l'essai
    Femme Profil pro
    Webmaster
    Inscrit en
    Octobre 2015
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 27
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Octobre 2015
    Messages : 16
    Points : 11
    Points
    11
    Par défaut
    Problème résolu.
    KEY est un mot-clé réservé, il à suffis de le modifier en par exemple Mdp

  5. #5
    Invité
    Invité(e)
    Par défaut
    Bonjour,
    ce problème est peut-être résolu, mais il n'en reste pas moins que ta requête n'est PAS DU TOUT en sécurité !

    Ce n'est pas un système de connexion, c'est une passoire à coquillettes !


    1/ On utilise une requête préparée quand on doit inclure des variables venant de l'utilisateur

    2/ On n'enregistre PAS un mot de passe en clair dans une base de données.

Discussions similaires

  1. Réponses: 2
    Dernier message: 12/05/2014, 16h32
  2. [PDO] Erreur louche : 'SQLSTATE[42000]: Syntax error or access violation: 1064'
    Par oliopur dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 19/03/2012, 17h10
  3. [MySQL] Erreur SQL : SQLSTATE[42000]: Syntax error or access violation: 1064
    Par petit.quent dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 29/12/2011, 16h13
  4. [MySQL] [MySQL] SQLSTATE[42000]: Syntax error or access violation: 1064
    Par Domotik35 dans le forum PHP & Base de données
    Réponses: 6
    Dernier message: 28/07/2011, 16h42
  5. [PDO] Erreur incompréhensible : 'SQLSTATE[42000]: Syntax error or access violation: 1064'
    Par cyril_k dans le forum PHP & Base de données
    Réponses: 5
    Dernier message: 13/12/2008, 12h12

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo