[RESOLU] Développement d'un jeu en ligne

Petit nouveau ! | 4 Messages

21 févr. 2016, 21:13

Bonjour,
Je me tourne ce soir vers vous puisqu'à court d'idées et de recherches, je n'ai malheureusement pas réussi à règler un problème en développant un jeu en ligne. Le problème réside dans l'attribution de la récompense aux gagnants en fin de partie, je fais appel à la fonction suivante:

Code : Tout sélectionner

function win_leader(){ require("database.php"); $query = "SELECT leader FROM sql_gen_servers WHERE id=1"; $stmt = mysqli_prepare($sql, $query); $stmt->bind_result($leader); $stmt->execute(); while($stmt->fetch()){ var_dump($leader); $query1 = "UPDATE sql_gen_members SET ranking=ranking+11, actions=actions+80 WHERE username=? AND server=1"; $stmt1 = mysqli_prepare($sql, $query1); $stmt1->bind_param('s', $leader); $stmt1->execute(); $stmt1->close(); $query1 = "UPDATE sql_gen_members SET ranking=ranking-6, actions=actions+40 WHERE username!=? AND server=1"; $stmt1 = mysqli_prepare($sql, $query1); $stmt1->bind_param('s', $leader); $stmt1->execute(); $stmt1->close(); } $stmt->close(); }
Et l'erreur suivante s'affiche: Fatal error: Call to a member function bind_param() on boolean in C:\xampp\htdocs\projet\functions.php on line 37

Cette ligne correspond à la ligne suivante du code ci-dessus: $stmt1->bind_param('s', $leader);, et ayant déja essayé de faire un var_dump($leader); après le fetch, j'ai obtenu un retour favorable à ce qui était attendu, la première boucle trouve donc la donnée recherchée: le pseudonyme du leader de la partie, en revanche les choses ont l'air de se compliquer pour l'écxécution des UPDATES plus bas.

Je ne sais plus où donner de la tête pour venir à bout de ce problème, et je vous serait éternellement reconnaissant si vous aviez la patience et le courage de m'aider à règler ce problème ! Merci d'avance :wink: !

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 9782 Messages

21 févr. 2016, 22:34

Bonjour,

Le message d'erreur indique que tu essayes de faire appel à la fonction bind_param() sur un booléen.
Cela veut donc dire que ta variable $stmt1 est un booléen (true ou false).
Or vu qu'elle est initialisé une ligne au dessus, je dirai que c'est ton mysqli_prepare() qui a une erreur et renvoie false.

Regarde du côté de mysqli_error pour en savoir + :
http://php.net/manual/fr/mysqli.error.php
Quand tout le reste a échoué, lisez le mode d'emploi...

Petit nouveau ! | 4 Messages

22 févr. 2016, 00:15

Je te remercie grandement, je vais prochainement jetter un coup d'oeil ! :)