Erreur : SQLSTATE[42000]: Syntax error or access violation: 1064 You have an err

Résolu/Fermé
modemo2018
Messages postés
220
Date d'inscription
vendredi 15 novembre 2019
Statut
Membre
Dernière intervention
10 août 2022
- 26 nov. 2019 à 13:04
Reivax962
Messages postés
3671
Date d'inscription
jeudi 16 juin 2005
Statut
Membre
Dernière intervention
11 février 2021
- 26 nov. 2019 à 16:40
Bonjour, je suis entrain de m'approndir sur le PHP PDO, lorsque j'essai de faire une lecture des données, il me renvoit cette erreur



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 ' class = 'CM2 '' at line 1


voici le code PHP


	
			//début de ton fichier php .... ça veut dire .. DEBUT !!!:
error_reporting ( E_ALL );
ini_set ( 'display_errors', TRUE );
ini_set ( 'display_startup_errors', TRUE );
		  
$class = !empty ( $_GET['class'] ) ? $_GET['class'] : NULL;
$cycle = !empty ( $_GET['cycle'] ) ? $_GET['cycle'] : NULL;
$iduser = !empty ( $_SESSION['id'] ) ? $_SESSION['id'] : NULL;
		  
		  
		  
		  
try
    {		
 $req = $bdd->prepare('SELECT nom, prenom FROM eleve WHERE iduser = :iduser, class = :class ');
	
	$req->execute(array('iduser' => $iduser, 'class' => $class ));
			 
	//Somme des élèves de la classe	
	 }
    catch(Exception $e)
    {
        die('Erreur : '.$e->getMessage());
    }
	




Quelqu'un peut-il m'aidé, comment faire résoudre cette erreur
A voir également:

1 réponse

Reivax962
Messages postés
3671
Date d'inscription
jeudi 16 juin 2005
Statut
Membre
Dernière intervention
11 février 2021
1 006
Modifié le 26 nov. 2019 à 13:08
Bonjour,

Dans la clause WHERE, on ne sépare pas les champs avec des virgules comme dans un SELECT ou un UPDATE, mais avec des opérateurs logiques AND, OR, etc.

Xavier
0
modemo2018
Messages postés
220
Date d'inscription
vendredi 15 novembre 2019
Statut
Membre
Dernière intervention
10 août 2022

26 nov. 2019 à 14:51
voilà ne partie d'un code de mon programme qui fonctionne bien, les champs sont séparé par des virgules:


< code basic>
try {
$req = $bdd->prepare ( $sql );
$req->execute();
$result = $req->fetchColumn ();
$id = $result + 1;
$sql = 'INSERT INTO matiere(nomat, coefficient, `class`, `cycle`, `serie`, idmat,iduser)
VALUES(:nomat, :coefficient, :class, :cycle, :serie, :idmat, :iduser)';
$datas = array(':nomat' => $nomat, ':coefficient' => $coef, ':class' => $class, ':cycle' => $cycle, ':serie' => $serie, ':idmat' => $id, ':iduser' => $iduser);
try {
$req = $bdd->prepare ( $sql );
if ( $req->execute ( $datas ) ) {

}

< /code>
0
Reivax962
Messages postés
3671
Date d'inscription
jeudi 16 juin 2005
Statut
Membre
Dernière intervention
11 février 2021
1 006
26 nov. 2019 à 16:40
Oui mais là, ce n'est pas une clause WHERE, c'est une clause INSERT... Dans laquelle on liste des champs, puis on liste des valeurs.
Alors qu'en fait, une clause WHERE représente non pas une liste de champs, mais un calcul de conditions.
0