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 :

Fatal error: Call to a member function bind_param() [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2008
    Messages
    124
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Conseil

    Informations forums :
    Inscription : Décembre 2008
    Messages : 124
    Points : 53
    Points
    53
    Par défaut Fatal error: Call to a member function bind_param()
    Bonjour à toutes et à tous,
    J'ai un petit blocage au niveau d'une requête et j'aurai besoin un coup de pouce
    Voilà, j'essaie de faire un WHILE sur une table pour ensuite pointer une deuxième :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    $mysqli->real_query("SELECT * FROM sms_received where etat = 0");
    $res = $mysqli->use_result();
    while ($rowsms_received = $res->fetch_assoc()) 
    	{	
    		$rowsms_received = $rowsms_received['number_phone'] ;
    		echo $rowsms_received ;
    		$stmtkj8_bl = $mysqli->prepare("SELECT * FROM kj8_bl WHERE num = ? "); 
    		$stmtkj8_bl->bind_param('s', $rowsms_received);
    		$stmtkj8_bl->execute();
    		display_table_achats_ ($result);
    		$stmtkj8_bl->store_result();
    		if ($stmtkj8_bl->num_rows == 0) 
    		{
    J'ai l'erreur Fatal error: Call to a member function bind_param() au niveau de la ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $stmtkj8_bl->bind_param('s', $rowsms_received);
    J'ai fait un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
      echo $rowsms_received ;
    et la variable contient bien une valeur

    Pouvez-vous m'aider svp ?

  2. #2
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse PHP/Java
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Points : 16 372
    Points
    16 372
    Par défaut
    Est-ce que le message d'erreur complet ne serait pas plutôt "Fatal error: Call to a member function bind_param() on a non-object" (ou similaire) ?
    Le problème est probablement au niveau de la préparation de la requête. Pour débugguer tu peux ajouter :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    $stmtkj8_bl = $mysqli->prepare("SELECT * FROM kj8_bl WHERE num = ? "); 
    if ($stmtkj8_bl === false) {
     printf("Message d'erreur : %s\n", $mysqli->error);
    die();
    }
    $stmtkj8_bl->bind_param('s', $rowsms_received);
    Modératrice PHP
    Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)
    Cherchez un peu avant poser votre question : Cours et Tutoriels PHP - FAQ PHP - PDO une soupe et au lit !.

    Affichez votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur) et [C=php][/C]

  3. #3
    Membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2008
    Messages
    124
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Conseil

    Informations forums :
    Inscription : Décembre 2008
    Messages : 124
    Points : 53
    Points
    53
    Par défaut
    Bonjour Celira et merci pour ta réponse
    La suite de l'erreur est : Fatal error: Call to a member function bind_param() on boolean in C:
    Quand j'ai ajouter ton bout de code pour l'affichage de l'erreur, ça a donné cela :

    Message d'erreur : Commands out of sync; you can't run this command now

  4. #4
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse PHP/Java
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Points : 16 372
    Points
    16 372
    Par défaut
    Ah ! c'est parce que tu utilises deux requêtes mysqli imbriquées. Deux possibilités :
    1) tu parcours intégralement la 1ere requête en stockant le résultat dans un tableau, puis tu boucles sur ton tableau pour lancer la 2e requête.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    $nums = [];
    while ($rowsms_received = $res->fetch_assoc()) 
    {
    	$nums[] = $rowsms_received['number_phone'] ;
    }
    $res->close();
    foreach ($nums as $rowsms_received) {
    	$stmtkj8_bl = $mysqli->prepare("SELECT * FROM kj8_bl WHERE num = ? "); 
    	$stmtkj8_bl->bind_param('s', $rowsms_received);
    	$stmtkj8_bl->execute();
    2) Tu utilises store_result

    Sinon, tu peux aussi laisser tomber mysqli et utiliser PDO (j'aime pas mysqli, notamment pour ce genre de trucs )
    Modératrice PHP
    Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)
    Cherchez un peu avant poser votre question : Cours et Tutoriels PHP - FAQ PHP - PDO une soupe et au lit !.

    Affichez votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur) et [C=php][/C]

  5. #5
    Membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2008
    Messages
    124
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Conseil

    Informations forums :
    Inscription : Décembre 2008
    Messages : 124
    Points : 53
    Points
    53
    Par défaut
    j'aime comment tu as synthétisé la solution
    je penses que je vais opter pour le PDO, mais je ne vais t’embêter avec comment le faire, si tu peux juste balancer un lien pour les requêtes PDO ça serai très généreux.

    Merci bcp pour ton aide

  6. #6
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse PHP/Java
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Points : 16 372
    Points
    16 372
    Modératrice PHP
    Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)
    Cherchez un peu avant poser votre question : Cours et Tutoriels PHP - FAQ PHP - PDO une soupe et au lit !.

    Affichez votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur) et [C=php][/C]

  7. #7
    Membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2008
    Messages
    124
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Conseil

    Informations forums :
    Inscription : Décembre 2008
    Messages : 124
    Points : 53
    Points
    53
    Par défaut
    Thanks a lot

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

Discussions similaires

  1. Réponses: 4
    Dernier message: 02/10/2009, 10h12
  2. [PDO] Fatal error: Call to a member function setFetchMode() on a non-object in
    Par tores20 dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 28/07/2009, 23h04
  3. [PHP 5.2] Fatal error: Call to a member function bindValue() on a non-object
    Par TeraD dans le forum Langage
    Réponses: 4
    Dernier message: 23/06/2009, 00h20
  4. Fatal error: Call to a member function on a non-object
    Par alemat13 dans le forum Langage
    Réponses: 6
    Dernier message: 31/12/2007, 17h22
  5. Fatal error: Call to a member function fetchAll()
    Par misterniark dans le forum Zend_Db
    Réponses: 2
    Dernier message: 15/06/2006, 17h29

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