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 :

PDOException: SQLSTATE[HY093]: Invalid parameter number: parameter was not defined


Sujet :

PHP & Base de données

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2013
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2013
    Messages : 9
    Points : 8
    Points
    8
    Par défaut PDOException: SQLSTATE[HY093]: Invalid parameter number: parameter was not defined
    Bonjour, J' ai une table avec des dates les dates sont de type datetime. J'essaye d'executer une requête juste avec l'année j'ai mis les dates une "combobox" je récupère et j’essaie de l'utiliser et on me renvoie cette erreur (je sais pas si je m'exprime bien) : voila le code
    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
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    <html>
    <head>
    <title>Infos Conso - Gestion EPI</title>
     
    <meta http-equiv="Content-Type" content="text/html; charset=UTF8" /> 
    <style type="text/css">
    <!--
    body {
    	background-color: #A9EAFE;
    }
    -->
    </style></head>
     
    <body>
    <center>
     
    <h3>CONSOMATION ANNUELLE</h3>
     
    <br><br><br><br>
    <?php
    		   		// set up DB 
    try {
        $strConnection = 'mysql:host=localhost;dbname=epi'; 
        $arrExtraParam= array(PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8"); 
        $pdo = new PDO($strConnection, 'root', '', $arrExtraParam); 
        $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    }
    catch(PDOException $e) {
        $msg = 'ERREUR PDO dans ' . $e->getFile() . ' L.' . $e->getLine() . ' : ' . $e->getMessage();
        die($msg);
    }
    		$an=$_GET['an'];
     
    		$query = 'SELECT Nom_EPI,SUM(Quantite) FROM `dotation` WHERE YEAR(date ) = YEAR(:date) GROUP BY Nom_EPI';
    		$mes = $pdo->prepare( $query, array(PDO::ATTR_CURSOR => PDO::CURSOR_SCROLL));
    		$mes->execute(array("YEAR(:date)" => $an));	
     
     
    		$nbligne = $mes->rowCount();//nombre lignes
    					$nbcolonne = $mes->columnCount();//nombre colonnes
     
    					if($nbligne>0){
    						//recuperation nom des colonnes
    						$colums = $mes->fetch(PDO::FETCH_ASSOC);
    						$x=1;
    						foreach($colums as $field_name=>$value) {
    							$col[$x] = $field_name;						
    							$x++;
    						}
    						//tableau
    						echo '<table cellpadding="2" cellspacing="2" border="5" class="display" id="lignecommande">
    						<thead>			
    							<tr>';
    							//titre du tableau
    							for($i=1;$i<$x;$i++)
    									echo '<th>'.strtoupper($col[$i]).'</th>';
    									echo '<th>CHOIX</th>';
    						echo'		
    							</tr>
    							</thead>
    							<tbody>';
    						//valeur des lignes
    						$alternate=0;
    						$mes->execute();
    						$y=0;
    						foreach($mes->fetchall() as $t){
    							$y=$y+1;
    							if($alternate%2==0){
    								echo '
    								<tr  id="'.$y.'" class="gradeB">';
    								for($i=1;$i<$x;$i++){
    									echo '<td class="center">'.$t[$col[$i]].'</td>';
    								}
    								echo '<td class="center"><input type="checkbox" name="check'.$y.'" value="'.$t[$col[1]].'"></td>';
    								echo'
    								</tr>';
    							}
    							else{
    								echo '
    								<tr  id="'.$y.'" class="gradeD">';
    								for($i=1;$i<$x;$i++){
    									echo '<td class="center">'.$t[$col[$i]].'</td>';
    								}
    								echo '<td class="center"><input type="checkbox" name="check'.$y.'" value="'.$t[$col[1]].'"></td>';
    								echo'
    								</tr>';
    							}
    							$alternate=$alternate+1;
    						}
    						echo '
    						</tbody>
    						<tfoot>
    							<tr>';
    								/*for($i=1;$i<$x;$i++)
    								echo '<th>'.strtoupper($col[$i]).'</th>';
    								echo '<th>CHOIX</th>';*/
    						echo'
    							</tr>
    						</tfoot>
    						</table>  
    						<input type="hidden" id="taille" value="'.$y.'" />';
    						$var=1;
    					}
    					else $var=0;
     
     
     
             ?>
     </center>
    </body>
    </html>
    ce quio est important c'est juste la requete

    merci d'avance!

  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
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    mes->execute(array(':date'=> $an));
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2013
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2013
    Messages : 9
    Points : 8
    Points
    8
    Par défaut
    ca marche toujours pas

  4. #4
    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
    avec la même erreur ?
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  5. #5
    Modérateur

    Avatar de MaitrePylos
    Homme Profil pro
    DBA
    Inscrit en
    Juin 2005
    Messages
    5 496
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : Belgique

    Informations professionnelles :
    Activité : DBA
    Secteur : Service public

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 496
    Points : 12 596
    Points
    12 596
    Par défaut
    Il me semble que c'est plutôt sa requête SQL qui pose souci.

    Déjà as tu vraiment un champ qui se nomme 'date' dans ta table, vu que c'est un mot clé, cela me semble incohérent, de plus c'est un extract que tu essayes de faire, donc moi je ferait comme ceci

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $query = 'SELECT Nom_EPI,SUM(Quantite) FROM `dotation` WHERE EXTRACT(YEAR FROM nom_du_champ_date) = :date GROUP BY Nom_EPI';

  6. #6
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2013
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2013
    Messages : 9
    Points : 8
    Points
    8
    Par défaut
    oui la même erreur ;

    et oui j'ai champ date dans ma table; bon là je m'en vais essayer ta solution

  7. #7
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2013
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2013
    Messages : 9
    Points : 8
    Points
    8
    Par défaut
    c'est bon..Merci beaucoup à vous!!

  8. #8
    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
    "date" c'est effectivement un mauvais nom pour une colonne.
    et je suppose que $an contient une année donc il n'y a pas à appliquer la fonction YEAR() dessus
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $query = 'SELECT Nom_EPI,SUM(Quantite) FROM `dotation` WHERE YEAR(`date`) = :date GROUP BY Nom_EPI';
    		$mes = $pdo->prepare($query);
    		$mes->execute(array(':date' => $an));
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 2
    Dernier message: 30/05/2015, 19h47
  2. Réponses: 2
    Dernier message: 08/04/2015, 20h59
  3. [Doctrine] SQLSTATE[HY093]: Invalid parameter number
    Par fastone650 dans le forum ORM
    Réponses: 6
    Dernier message: 09/07/2011, 20h41
  4. Réponses: 6
    Dernier message: 03/06/2010, 10h09
  5. Réponses: 3
    Dernier message: 25/08/2009, 23h25

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