Erreur ! SQLSTATE[22007]: Invalid datetime format: 1292 Truncated incorrect

Résolu
modemo2018 Messages postés 226 Date d'inscription   Statut Membre Dernière intervention   -  
modemo2018 Messages postés 226 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour à tous, j'ai un programme qui envoie une requête pour supprimer des donnée dans la BDD, ce code je l'ai copier à partir d'une autre page qui fonctionne sans problème et j'ai juste changé de paramêtre mais depuis il me renvoit cette erreur

Erreur ! SQLSTATE[22007]: Invalid datetime format: 1292 Truncated incorrect DOUBLE value: '2; 'Array ( [0] => 2; [1] => août )

voici mon code suppression


if ( $choix == 'supprimenote') {
	
	echo $mois; echo $ideleve;
	
	
$sql = 'DELETE FROM note WHERE ideleve = ? AND mois = ?';
$datas = array($ideleve, $mois);
try{
  $req = $bdd->prepare($sql);
  $req->execute($datas);  
} catch ( Exception $e ) {
    // en cas d'erreur :
    echo " Erreur ! " . $e->getMessage ();
    print_r ( $datas );
    exit;
  }	
	try
    {		
 $req12 = $bdd->prepare('SELECT moyene FROM general WHERE id = ?  AND mois = ? AND an = ?');
	
	$req12->execute(array($id,  $mois, $annee ));	
	 }
    catch(Exception $e)
    {
        die('Erreur : '.$e->getMessage());
    }		  
$moyene =  $req12->fetch();		
	
if ( !empty($moyene['moyene'])) {
	
	
$sql = 'DELETE FROM general WHERE id = ? AND mois = ?';
$datas = array($id $mois);
try{
  $req = $bdd->prepare($sql);
  $req->execute($datas);  
} catch ( Exception $e ) {
    // en cas d'erreur :
    echo " Erreur ! " . $e->getMessage ();
    print_r ( $datas );
    exit;
  }		

  }	



Je comprend pas, quelqu'un peut-il me dire ce qui m'échappe dans ce code SVP?
A voir également:

2 réponses

jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 752
 
Bonjour,

Encore une fois.. tu copies/colles du code sans le comprendre !

Encore une fois.. tu postes ta question dans le forum mysql ... alors que je pense que le souci se situe au niveau du code PHP....

Encore une fois ... tu poses ta question sur le forum sans avoir essayé de comprendre le message d'erreur...

Encore une fois... tu poses ta question sur le forum sans avoir essayé de débuguer ton code à l'aide de var_dump / echo de tes variables...

Bref....

Commence par faire des var_dump de tes variables $mois, $annee et montre nous ce que ça te retourne.

Ajoute également des echos dans ton code (dans chaque catch ) ( echo "requete 1 ";... echo "requete 2 "; ... etc.... ) histoire de savoir sur quelle requête il bloque... et en fonction, montre nous la structure (via un DUMP par exemple ) de la table concernée. ( note ? moyenne ou général ?? )

Après.... je suppose, vu le message d'erreur... que ta table utilise un champ DATE ou DATETIME... et que toi, tu essaies de lui envoyer un array contenant les valeurs 2 et août...

2
modemo2018 Messages postés 226 Date d'inscription   Statut Membre Dernière intervention   2
 
Le
 var_dump($annee); var_dump($mois);
m'affiche ceci:

string(4) "2020" string(5) "août" Erreur ! SQLSTATE[22007]: Invalid datetime format: 1292 Truncated incorrect DOUBLE value: '2; 'Array ( [0] => 2; [1] => août ).

c'est vraiment insensé car le mois et l'année s'affiche normalement et il n'ya pas de de souci, logiquement il devrait pas avoir d'erreur, et c'est la 1ère fois que je rencontre ce type d'erreur

Ma requête est sensé supprimé toute les donnée la personne choisi





voici le code intégrale:

if (( $choix == 'supprimenote') && (($trim == $trimed)||($trim == $trime)||($trim == $coll))) {
	
	 var_dump($annee); var_dump($mois);
	
	
$sql = 'DELETE FROM note WHERE ideleve = ? AND mois = ?';
$datas = array($ideleve, $mois);
try{
  $req = $bdd->prepare($sql);
  $req->execute($datas);  
} catch ( Exception $e ) {
    // en cas d'erreur :
    echo " Erreur ! " . $e->getMessage ();
    print_r ( $datas );
    exit;
  }	
	
 	

	try
    {		
 $req12 = $bdd->prepare('SELECT moyene FROM moyengeneral WHERE ideleve = ?  AND mois = ? AND an = ?');
	
	$req12->execute(array($ideleve,  $mois, $annee ));	
	 }
    catch(Exception $e)
    {
        die('Erreur : '.$e->getMessage());
    }		  
$moyene =  $req12->fetch();		
	
if ( !empty($moyene['moyene'])) {
	
	
$sql = 'DELETE FROM moyengeneral WHERE ideleve = ? AND mois = ?';
$datas = array($ideleve, $mois);
try{
  $req = $bdd->prepare($sql);
  $req->execute($datas);  
} catch ( Exception $e ) {
    // en cas d'erreur :
    echo " Erreur ! " . $e->getMessage ();
    print_r ( $datas );
    exit;
  }		

  }		

header('Location: notesup.php?class='.$class. '&serie='.$serie. '&cycle='.$cycle);
 exit();
		
	

	
	}
0
jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 752
 
Je t'"ai demandé de placer des echo à chacune de tes requêtes pour savoir laquelle pose problème....
Et également un dump de tes tables...
où en es-tu de ces demandes ??
0
modemo2018 Messages postés 226 Date d'inscription   Statut Membre Dernière intervention   2 > jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention  
 
Hourra!! j'ai réglé le problème, merci pour ton aide cher Jordan45
0
jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 752 > modemo2018 Messages postés 226 Date d'inscription   Statut Membre Dernière intervention  
 
Et donc (juste au cas où...ça pourrait servir à d'autres... c'est le principe du forum...) quelle était le souci ??
0
modemo2018 Messages postés 226 Date d'inscription   Statut Membre Dernière intervention   2 > jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention  
 
Je crois que s'etait avec la manière d'écrire la requête, lorsque j'ai changé la méthode, ça marché sans problème, dommage j'ai pas compris pourquoi il me parlait de DATETIME, ça n'avait pas de sens
0