Erreur Warning: mysql_fetch_array() expects ....

Résolu
Bonjour,

Je ne connais pas le code et j'ai un message d'erreur qui est : Warning: mysql_fetch_array() expects parameter 1 to be resource, boolean given in /web/csasoftwargame/travian/GameEngine/Database/db_MYSQL.php on line 702

Voici mon code à la ligne en question :
    	function getMInfo($id) {
$q = "SELECT * FROM " . TB_PREFIX . "wdata left JOIN " . TB_PREFIX . "vdata ON " . TB_PREFIX . "vdata.wref = " . TB_PREFIX . "wdata.id where " . TB_PREFIX . "wdata.id = $id";
$result = mysql_query($q, $this->connection);
return mysql_fetch_array($result);
}

Merci de votre aide mon serveur est HS pour l'instant ....

4 réponses

  1. Bonjour,

    Pour info, mysql_fetch_array nécessite un résultat SQL en paramètre.
    Or mysql_query renvoie un résultat SQL... ou le booléen FALSE en cas d'erreur.
    Ton message d'erreur est clair : mysql_query a renvoyé FALSE.

    Le mieux pour comprendre l'erreur est d'utiliser la fonction mysql_error(), qui affiche la dernière erreur rencontrée.
    Par exemple comme ceci :
    $result = mysql_query($q, $this->connection) or die("Erreur SQL dans la requête <br/>$q<br/>" . mysql_error());


    Xavier
    1. tu as utilisé ça, ( . TB_PREFIX . ); si vous ne précisez pas le non de la table dans ta requête et tu préfères la récupérer ailleur, il faut préciser que TB_PREFIX est une variable.
      donc remplace TB_PREFIX par $TB_PREFIX.
      mais il faut assurer ke tu pe récupérer la valeur de $TB_PREFIX quelque part
      1. TB_PREFIX est manifestement une constante et ne nécessite pas le signe des variables $.
        Après, c'est sûr qu'il vaut mieux vérifier qu'elle est correctement définie... Mais je pense qu'il y aurait une autre erreur si tel n'était pas le cas.
    2. Merci à tous l'erreur semble résolu, seulement cela à recommencer en mettant $result = mysql_query($q, $this->connection) or die("Erreur SQL dans la requête <br/>$q<br/>" . mysql_error());
      il m'indique une erreur de syntaxe
      1. C'est très étrange cela ce produit pas tout le temps mais quand c'est le cas je suis bloqué ....
        1. Voici le message complet :

          "?Erreur SQL dans la requête
          SELECT * FROM s1_wdata left JOIN s1_vdata ON s1_vdata.wref = s1_wdata.id where s1_wdata.id =
          You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near '' at line 1"
        2. Dans ton message d'erreur, regarde bien la requête : il manque la fin !
          Tout simplement parce que $id doit être vide...

          Du coup, tu devrais faire une petite vérif du contenu de cette variable.
        3. C'est bon si je redémarre mon serveur il n'y a plus le soucis...

          merci