Partage
  • Partager sur Facebook
  • Partager sur Twitter

Fatal error: Call to undefined function mysqli_fet

    16 août 2018 à 8:34:07

    Hello les zero,

    voila j'essayer d'apprendre à créer un cms avec tutoriel copier/coller sur un site web.

    Mais apparement le code de ce monsieur ne fonctionne pas comme prévu??

    il utilise mysqli pour les connexion le problem c'est que je n'est pas assez les compétences pour comprendre sont code pour passer à PDO.

    même si il y a des milliers d'exemple sur le net..

    le message d'erreur: 
    
    
    Fatal error: Call to undefined function mysqli_fetch_all() in /var/www/html/blog/includes/public_functions.php on line 11
    
    
    
    et la fonction ou çà plante:
    
    
    
    <?php 
    
    /* * * * * * * * * * * * * * *
    
    * Returns all published posts
    
    * * * * * * * * * * * * * * */
    
    function getPublishedPosts() {
    
    	// use global $conn object in function
    
    	global $conn;
    
    	$sql = "SELECT * FROM posts WHERE published=true";
    
    	$result = mysqli_query($conn, $sql);
    
    	// fetch all posts as an associative array called $posts
    
    	$posts = mysqli_fetch_all($result, MYSQLI_ASSOC);
    
    
    
    	$final_posts = array();
    
    	foreach ($posts as $post) {
    
    		$post['topic'] = getPostTopic($post['id']); 
    
    		array_push($final_posts, $post);
    
    	}
    
    	return $final_posts;
    
    }

    Quelqu'un peut m'aider à remplacer la fonction mysqli_fetch_all par une au fonction , j'ai trouver une solution qui fonction qui est:


    function getPublishedPosts() {
    	// use global $conn object in function
    	global $conn;
    	$sql = "SELECT * FROM posts WHERE published=true";
    	$result = mysqli_query($conn, $sql)  or die ("Error in Selecting " .  mysqli_error($conn));;
    
    	$posts = array();
    	
    	while ($row = $result->fetch_assoc()) {
                $posts[] = $row;
             }
           
    	return $posts;
    }
    
    // more functions to come here ...
    ?>
    
    





    mais apres je sais pas comment l'adapter avec la suite du code qui est :

    /* * * * * * * * * * * * * * *
    * Receives a post id and
    * Returns topic of the post
    * * * * * * * * * * * * * * */
    function getPostTopic($post_id){
    	global $conn;
    	$sql = "SELECT * FROM topics WHERE id=
    			(SELECT topic_id FROM post_topic WHERE post_id=$post_id) LIMIT 1";
    	$result = mysqli_query($conn, $sql);
    	$topic = mysqli_fetch_assoc($result);
    	return $topic;
    }




    -
    Edité par michael10fr 16 août 2018 à 8:34:52

    • Partager sur Facebook
    • Partager sur Twitter
      16 août 2018 à 11:27:20

      Le code pris pour modèle me semble très loin d'être propre (or die, global, manque d'échappement ou plutôt cast sur $post_id, pourrait plus efficace sur le chargement des topics, etc) ...

      > Quelqu'un peut m'aider à remplacer la fonction mysqli_fetch_all par une au fonction

      mysqli_fetch_all n'est disponible que si mysqli est compilé pour utiliser mysqlnd au lieu de libmysql (cf sa doc).

      Une correction serait d'ajouter ce code :

      if (!function_exists('mysqli_fetch_all')) {
          function mysqli_fetch_all(mysqli_result $result) {
              $rows = [];
              while ($row = mysqli_fetch_assoc($result)) {
                  $rows[] = $row;
              }
      
              return $rows;
          }
      }
      

      De façon à créer la fonction en PHP pur quand elle n'est pas disponible.

      > mais apres je sais pas comment l'adapter avec la suite du code qui est :

      Je ne comprends pas le problème, tu ne devrais rien avoir à faire par rapport au remplacement ou ajout de mysqli_fetch_all.

      -
      Edité par julp 16 août 2018 à 11:46:00

      • Partager sur Facebook
      • Partager sur Twitter
        16 août 2018 à 19:09:25

        waouu bravo çà a marche du premier coup..

        j'avoue que j'ai pas tout compris ..

        du moin je vais te dire ce que j'ai compris , tu a ecris :

        si la fonction mysqli_fetch_all n'existe pas alors tu créer un tableau $row puis tu boucle sur while et tu afffiche chaque ligne dans la variable rows et enfin de parcours tu retourne la variable $rows pour l'afficher

        par contre j'arrive pas a comprendre le dernier bloc comment il est relier au bloc de la fonction que ta créer encore bravo..

        	
        	if (!function_exists('mysqli_fetch_all')) {
            function mysqli_fetch_all(mysqli_result $result) {
                $rows = [];
                while ($row = mysqli_fetch_assoc($result)) {
                    $rows[] = $row;
                }
        
                return $rows;
            }
        }
        	$posts = mysqli_fetch_all($result, MYSQLI_ASSOC);
        
        	$final_posts = array();
        	foreach ($posts as $post) {
        		$post['topic'] = getPostTopic($post['id']); 
        		array_push($final_posts, $post);
        	}
        	return $final_posts;
        }

        Du coup j'en est créer une fonction dont je fait appel à chaque boucle qu'il fait comme ceux ci,

        car il a repeter ce code sur tout sont script blog...lol

        voic la fonction

        function fetchall1() {
        
        if (!function_exists('mysqli_fetch_all')) {
            function mysqli_fetch_all(mysqli_result $result) {
                $rows = [];
                while ($row = mysqli_fetch_assoc($result)) {
                    $rows[] = $row;
                }
        
                return $rows;
            }
        }
        
        }
        
        Et voici comment je l'appel:
        fetchall1();
        grace à toi j'ai pu evoluer ..merci encore




        -
        Edité par michael10fr 16 août 2018 à 19:28:16

        • Partager sur Facebook
        • Partager sur Twitter
          16 août 2018 à 19:30:35

          Hum, il doit te manquer des bases en programmation.

          Je ne fais que créer la fonction (écrite en PHP) si elle n'existe pas/n'est pas disponible au niveau de PHP (écrite en C, on en revient à l'histoire de mysqlnd vs libmysql utilisée comme bibliothèque cliente).

          Au final, "ma" fonction ne fait que ce que tu avais déjà écrit en remplaçant le mysqli_fetch_all par le while ($row = mysqli_fetch_assoc($result)) pour stocker tous les résultats dans un tableau. Mais, en procédant ainsi, tu n'as pas à remplacer chaque occurrence de mysqli_fetch_all comme tu étais parti pour le faire.

          Pour ta dernière question, de ce que je comprends, en rien si ce n'est juste par l'appel à mysqli_fetch_all (ligne 12).

          EDIT : non, pour ton edit, pourquoi mets-tu une fonction dans une fonction ? Non seulement je ne sais même pas comment ça pourrait fonctionner entre le manque d'appel et de return mais pourquoi tu aurais besoin d'une fonction fetchall1 quand tu peux appeler directement mysqli_fetch_all. Je ne comprends absolument pas ce que tu cherches à faire !

          -
          Edité par julp 16 août 2018 à 19:34:26

          • Partager sur Facebook
          • Partager sur Twitter

          Fatal error: Call to undefined function mysqli_fet

          × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
          × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
          • Editeur
          • Markdown