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

Résolu/Fermé
modemo2018 Messages postés 226 Date d'inscription vendredi 15 novembre 2019 Statut Membre Dernière intervention 13 octobre 2022 - 26 nov. 2019 à 13:04
Reivax962 Messages postés 3672 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 3672 Date d'inscription jeudi 16 juin 2005 Statut Membre Dernière intervention 11 février 2021 1 011
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 226 Date d'inscription vendredi 15 novembre 2019 Statut Membre Dernière intervention 13 octobre 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 3672 Date d'inscription jeudi 16 juin 2005 Statut Membre Dernière intervention 11 février 2021 1 011
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