Se connecter avec
S'enregistrer | Connectez-vous

Problème PHP/MySQL

Dernière réponse : dans Programmation

Voilà j'ai l'erreur suivante : Erreur : SQLSTATE[HY093]: Invalid parameter number: parameter was not defined

Je ne vois pas l'erreur dans ma requête SQL qui se trouve à la fin du fichier...

Je l'ai relu plusieurs fois mais sans comprendre le nombre de paramètre est bien le même (11) partout...

Merci d'avance


  1. <?php
  2. $bdd = new PDO('mysql:host=***;dbname=***', '***', '***');
  3. ?>
  4.  
  5. <?php
  6. // Testons si le fichier a bien été envoyé et s'il n'y a pas d'erreur
  7. if (isset($_FILES['Photo_livre']) AND $_FILES['Photo_livre']['error'] == 0)
  8. {
  9. // Testons si l'extension est autorisée
  10. $infosfichier = pathinfo($_FILES['Photo_livre']['name']);
  11. $extension_upload = $infosfichier['extension'];
  12. $extensions_autorisees = array('jpg', 'jpeg', 'gif', 'png');
  13. if (in_array($extension_upload, $extensions_autorisees))
  14. {
  15. // On peut valider le fichier et le stocker définitivement
  16. move_uploaded_file($_FILES['Photo_livre']['tmp_name'], 'images/' . basename($_FILES['Photo_livre']['name']));
  17. echo "L'envoi a bien été effectué !";
  18. //$maphoto=$_FILES[]
  19. }
  20. }
  21. ?>
  22.  
  23.  
  24.  
  25. <html>
  26.  
  27. <head>
  28.  
  29. <title></title>
  30. <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
  31. </head>
  32. <body>
  33. <?php
  34.  
  35.  
  36. /* Auteur,Editeur,Annee_de_parution,Langue,Nombre_de_pages,Sous-titre,ISBN,Couverture,Resume,Note */
  37. /*
  38. $_POST['Auteur'];
  39. $_POST['Titre'];
  40. $_POST['Editeur'];
  41. $_POST['Annee_de_parution'];
  42. $_POST['Langue'];
  43. $_POST['Nombre_de_pages'];
  44. $_POST['Sous-titre'];
  45. $_POST['ISBN'];
  46. $_POST['Couverture'];
  47. $_POST['Resume'];
  48. $_POST['Note'];
  49. */
  50.  
  51. /* On vérifie que ls champs obligatoires ont bien été remplis : L'auteur, l'editeur, et le titre */
  52.  
  53. if (($_POST['Auteur']=="")||($_POST['Editeur']=="")||($_POST['Titre']=="")||($_POST['ISBN']==""))
  54. {
  55. if($_POST['Auteur']=="") echo "Veuillez saisir le nom de l'auteur <BR>\n" ;
  56. if($_POST['Editeur']=="") echo "Veuillez saisir le nom de l'editeur <BR>\n" ;
  57. if($_POST['Titre']=="") echo "Veuillez saisir le titre <BR>\n" ;
  58. if($_POST['ISBN']=="") echo "Veuillez saisir le ISBN <BR>\n" ;
  59. }
  60.  
  61.  
  62.  
  63. else
  64. {
  65. $_POST['ISBN']=(int)$_POST['ISBN'];
  66. if ($_POST['ISBN']<1)
  67. {
  68. echo "ISBN incorrect";
  69. }
  70. else
  71. {
  72. ?>
  73. <p> Récapitulatif des informations saisies </br>
  74. </br>
  75. Auteur : <?php echo htmlspecialchars($_POST['Auteur']); ?> </br>
  76. Titre :<?php echo htmlspecialchars($_POST['Titre']); ?> </br>
  77. Editeur : <?php echo htmlspecialchars($_POST['Editeur']); ?> </br>
  78. <?php
  79. if (!($_POST['Annee_de_parution']==""))
  80. {
  81. $_POST['Annee_de_parution']=(int)$_POST['Annee_de_parution'];
  82. if ( ($_POST['Annee_de_parution']>2011) || ($_POST['Annee_de_parution']<1000) )
  83. {
  84. echo "mauvaise annee de parution"; ?> </BR> <?php
  85. }
  86. else
  87. {
  88. ?>
  89. Annee de parution : <?php echo htmlspecialchars($_POST['Annee_de_parution']); ?> </br>
  90. <?php
  91. }
  92. }
  93. if (!($_POST['Langue']==""))
  94. {
  95. ?>
  96. Langue : <?php echo htmlspecialchars($_POST['Langue']); ?> </br>
  97. <?php
  98. }
  99. if (!($_POST['Nombre_de_pages']==""))
  100. {
  101. $_POST['Nombre_de_pages']=(int)$_POST['Nombre_de_pages'];
  102. if ($_POST['Nombre_de_pages']<1)
  103. {
  104. echo "vous n'avez pas rentrer le bon nombre de pages"; ?> </br> <?php
  105. }
  106. else
  107. {
  108. ?>
  109. Nombre de pages : <?php echo htmlspecialchars($_POST['Nombre_de_pages']); ?> </br> <?php
  110. }
  111. if (!($_POST['Nombre_de_pages']==""))
  112. {
  113. ?>
  114. Sous-titre : <?php echo htmlspecialchars($_POST['Sous-titre']); ?> </br> <?php
  115. }
  116. }
  117. ?>
  118.  
  119. ISBN : <?php echo htmlspecialchars($_POST['ISBN']); ?> </br> <?php
  120.  
  121. if (!($_POST['Resume']==""))
  122. {
  123. ?>
  124. Resume : <?php echo htmlspecialchars($_POST['Resume']); ?> </br> <?php
  125. }
  126.  
  127. if (!($_POST['Note']==""))
  128. {
  129. $_POST['Note']=(int)$_POST['Note'];
  130. if ($_POST['Note']>20||$_POST['Note']<0)
  131. {
  132. ?>
  133. <p> La note doit etre comprise entre 0 et 20 ! </p>
  134. <?php
  135. }
  136. else
  137. {
  138. ?>
  139. Note : <?php echo htmlspecialchars($_POST['Note']); ?> </br> <?php
  140. }
  141. }
  142.  
  143. try
  144. {
  145. $pdo_options[PDO::ATTR_ERRMODE] = PDO::ERRMODE_EXCEPTION;
  146. $bdd = new PDO('mysql:host=****;dbname=****', '***', '***', $pdo_options);
  147.  
  148. $req = $bdd->prepare('INSERT INTO livres(Titre,Auteur,Editeur,Annee_de_parution,Langue,Nombre_de_pages,Sous-titre,ISBN,Couverture,Resume,Note)
  149. VALUES(:Titre, :Auteur, :Editeur, :Annee_de_parution, :Langue, :Nombre_de_pages, :Sous-titre, :ISBN, :Couverture, :Resume, :Note )');
  150. $req->execute(array(
  151. 'Titre' => $_POST['Titre'],
  152. 'Auteur' => $_POST['Auteur'],
  153. 'Editeur' => $_POST['Editeur'],
  154. 'Annee_de_parution' => $_POST['Annee_de_parution'],
  155. 'Langue' => $_POST['Langue'],
  156. 'Nombre_de_pages' => $_POST['Nombre_de_pages'],
  157. 'Sous-titre' => $_POST['Sous-titre'],
  158. 'ISBN' =>$_POST['ISBN'],
  159. 'Couverture' => $_FILES['Photo_livre']['name'],
  160. 'Resume' => $_POST['Resume'],
  161. 'Note' => $_POST['Note']
  162. ));
  163.  
  164. ?>
  165. Le livre a bien été ajouté ! </br> <?php
  166. }
  167. catch(Exception $e)
  168. {
  169. die('Erreur : '.$e->getMessage());
  170. }
  171.  
  172.  
  173. }
  174. }
  175. ?>
  176. </p>
  177. </body>
  178. </html>





Autres pages sur : probleme php mysql

Lassé par la pub ? Créez un compte

Merci beaucoup, c'était bien ça :) 

Évidemment une autre erreur est apparue mais je progresse peu à peu.

L'erreur c'est : Erreur : SQLSTATE[42S22]: Column not found: 1054 Unknown column 'Nombre_de_pages' in 'field list'

La structure de la table 'livres' de la base de donnée est pourtant :

Titre, Auteur, Editeur, Annee_de_parution, Langue, Nombre_de_pages, Sous_titre, ISBN, Couverture, Resume, Note

et j'ai relu plusieurs fois pour vérifier que je n'avais pas fait de faute de frappe...

Je suis donc encore un fois un peu à court d'idées sur ce problème :( 

En fait j'ai fait un sceenshot mais je ne sais pas comment le mettre sur le forum :s

Dans les faits j'ai enlevé 'Nombre_de_pages' partout dans la script et ça fonctionne, ce qui signifie qu'il n'y a pas d'autres erreurs, mais le nom de la colonne de la table est bien correct.
Lassé par la pub ? Créez un compte
Tom's guide dans le monde