Impossible d'envoyer mes donnée a mysql

Bonjour,

je vien vers vous car j'ai un petit souci je recois le message suivant
Fatal error: Call to a member function bind_param(
voici mon code
if (isset($_POST['valider']))  {
  $prenom = $_POST["prenom"] ;
  $adresse = $_POST["adresse"] ;
}

$con = new mysqli('localhost', 'root', 'root', 'conexion' ) ;
if ($con->connect_error) {
    die("Echec de connexion avec mysqli: " . $con->connect_error);
}
$tmpr = $con->prepare("INSERT INTO `information` (prenom,  adresse) VALUES (?, ?)");
$tmpr ->bind_param("ss",$prenom,$adresse);
$tmpr->execute();



je ne vois pas ou et l'erreur car j'ai le meme code sur un autre site il marche tres bien

merci cordialement

EDIT : Correction des balises de code pour avoir la coloration syntaxique (jordane)

3 réponses

  1. Contributeur
    bonjour, le message d'erreur ne contient-il pas d'autres informations?
    0
    1. Modérateur
      Bonjour,

      Dans un premier temps il faudrait activer l'affichage des erreurs php.
      et également gérer les éventuelles erreurs de requête..

      Egalement récupérer proprement les variables avant de le utiliser
      (je t'invite à appliquer ce qui est indiqué ici : https://forums.commentcamarche.net/forum/affich-37584947-php-gestion-des-erreurs-debogage-et-ecriture-du-code )

      et enfin, ajouter de la gestion d'erreur pour afficher les problèmes éventuels du code et essayer d'avoir des messages d'erreur expliquant la raison du souci.

      Par exemple :

      <?php
      //Au début du script PHP
      //activation de l'affichage des erreurs PHP
       error_reporting(E_ALL);
       ini_set('display_errors', TRUE);
       ini_set('display_startup_errors', TRUE);
      
      //connexion à la bdd
       $con = new mysqli('localhost', 'root', 'root', 'conexion' ) ;
       if ($con->connect_error) {
         die("Echec de connexion avec mysqli: " . $con->connect_error);
       }
      
      //récupération PROPRE des variables AVANT de les utiliser
       $prenom = !empty($_POST["prenom"]) ? $_POST["prenom"] : NULL ;
       $adresse =!empty($_POST["adresse"]) ? $_POST["adresse"] : NULL ;
      
      //traitement du submit
       if($nom && $adresse){
         $sql = "INSERT INTO `information` (prenom,  adresse) VALUES (?, ?)";
         if( $tmpr = $con->prepare($sql) ){
           if(!$tmpr->bind_param("ss",$prenom,$adresse)){
              echo "Binding parameters failed: (" . $tmpr->errno . ") " . $tmpr->error;
              exit();
           }
           if(!$tmpr->execute()){
             echo "Execute failed: (" . $tmpr->errno . ") " . $tmpr->error;
             exit();
           }
         }else{
           echo "Erreur dans la requête ".$sql;
           echo "Prepare failed: (" . $con->errno . ") " . $con->error;
           exit();
         }
      }
      ?>
      
      


      PS: pour poster ton code, merci à l'avenir d'y préciser le LANGAGE afin d'avoir la coloration syntaxique
      Explications disponibles ici : https://codes-sources.commentcamarche.net/faq/11288-les-balises-de-code

      0
      1. bonjour

        allez hop un sujet résolu de plus !

        merci cordialement
        0
        1. Modérateur
          Dans ce cas clique sur l'icône de roue crantee en haut a droite pour passer le sujet en RÉSOLU.
          Bonne soirée
          0