Erreur : SQLSTATE[42000]: Erreur de syntaxe ou violation d'accès : 1064 Vous avez une erreur
Resuelto
modemo2018
Mensajes publicados
254
Estado
Miembro
-
Reivax962 Mensajes publicados 3742 Estado Miembro -
Reivax962 Mensajes publicados 3742 Estado Miembro -
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 :
```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());
}
```
Pour résoudre l'erreur, modifiez la requête SQL pour utiliser "AND" au lieu de la virgule entre les conditions dans la clause WHERE :
```php
$req = $bdd->prepare('SELECT nom, prenom FROM eleve WHERE iduser = :iduser AND class = :class');
```
Voici le code PHP :
```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());
}
```
Pour résoudre l'erreur, modifiez la requête SQL pour utiliser "AND" au lieu de la virgule entre les conditions dans la clause WHERE :
```php
$req = $bdd->prepare('SELECT nom, prenom FROM eleve WHERE iduser = :iduser AND class = :class');
```
1 respuesta
-
Hola,
En la cláusula WHERE, no se separan los campos con comas como en un SELECT o un UPDATE, sino con operadores lógicos AND, OR, etc.
Xavier-
voilà ne partie d'un code de mon programme qui fonctionne bien, les champs sont séparé par des virgules:
< código básico>
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 ) ) {
}
< /código> -
-