Retour de mysqli_result

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Retour de mysqli_result

Re: Retour de mysqli_result

par Ryle » 29 mars 2021, 18:18

Salutations !

Dans le lien proposé par or1, la documentation indique pour mysqli_query " Retourne false en cas d'échec. Pour des requêtes réussites qui produisent un jeu de résultat tel que SELECT, SHOW, DESCRIBE ou EXPLAIN, mysqli_query() retournera un objet mysqli_result. Pour les autres types de requêtes ayant réussi, mysqli_query() retournera true. "

Si la valeur retour de mysqli_query est :
== false (la valeur est fausse), c'est qu'il y a eu une erreur
=== true (la valeur est vrai ET le type est booléen), c'est que la requête s'est exécutée correctement mais n'a pas produit de jeu de résultat. Il ne faut donc pas faire de fetch ou de free
autre (la valeur n'est pas fausse ET le type n'est pas booléen), c'est que la requête a retourné un jeu de résultat (même vide) et que tu peux procéder au traitement de celui-ci avec ton fetch et ton free :)

Re: Retour de mysqli_result

par or 1 » 26 mars 2021, 14:48

quel est ce nouveau message d'erreur exactement ?

Re: Retour de mysqli_result

par Anto » 26 mars 2021, 14:31

En fait, c'est le "while ($data = mysqli_fetch_assoc($result)) {"
qui me retour un message d'erreur pas le free_result.

Re: Retour de mysqli_result

par or 1 » 25 mars 2021, 11:26

https://www.php.net/manual/fr/mysqli.query.php
/* "Create table" ne retournera aucun jeu de résultats */
if ($mysqli->query("CREATE TEMPORARY TABLE myCity LIKE City") === TRUE) {
printf("Table myCity créée avec succès.\n");
}

avec un insert, le retour est true, donc il ne faut pas exécuter mysqli_free_result($result);

Retour de mysqli_result

par Anton » 25 mars 2021, 03:21

Bonjour,
Je galère depuis quelques jours pour avoir un "bon résultat"...
J'utilise une fonction db_resultat dont le code est :
function db_resultats($sql,$database) {
        $resultat=array();
        if (mysqli_connect_errno()) {
            printf("Échec de la connexion : %s\n", mysqli_connect_error());
	    die("Erreur");
	    exit();
        }
	if ($result = mysqli_query($database,$sql)) {
	          if ($result) {
			while ($data = mysqli_fetch_assoc($result)) {
			$resultat[] = $data;
		   }
		   mysqli_free_result($result);
	}
        return $resultat;
}
une autre fonction appelée avant ouvre la connexion à la database mysql...Bref, du classique...
Si $sql = "select * from toto"; -> Pas de problème tout fonctionne bien même si le résultat est vide pas de soucis ... cela marche comme je le souhaite. Mais si $sql="insert into toto values ('test');"; ou même un update, j'ai le retour suivant :
Warning: mysqli_free_result() expects parameter 1 to be mysqli_result, bool given in test.php on line xxx.., l'action est bien faite en base mais j'ai un Warning que je veux enlever. Je crois que c'est parqu'il n'y a pas de record en retour mais quel est le bon test à mettre ?
Est-ce quelqu'un à une idée de ce qui manque dans mon code ?

Merci de votre aide ...
A+