Probleme Warning: mysql_fetch_array() expects parameter 1 to be

Bonjour,

Je ne connais pas le code et lors d'une action sur mon serveur j'ai une erreur :

Warning: mysql_fetch_array() expects parameter 1 to be resource, boolean given in /web/csasoftwargame/Forum/GameEngine/Database/db_MYSQL.php on line 685

Voici la ligne en question :

function getCoor($wref) {
$q = "SELECT x,y FROM " . TB_PREFIX . "wdata where id = $wref";
$result = mysql_query($q, $this->connection);
return mysql_fetch_array($result) or exit(mysql_error());

}

Merci de votre aide

12 réponses

  1. Je n'en veux pas. Je ne veux pas prendre en charge la totalité d'un script probablement assez complexe.
    C'est à toi de trouver dans ton code où cette fonction est appelée, et pourquoi cet appel avec ce paramètre vide.
    Ou tu peux poster une autre question sur le forum, en précisant que tu es arrivé à la conclusion que cette fonction était appelée avec un paramètre vide. Peut-être que quelqu'un de plus disponible (ou plus courageux) que moi pourra te répondre.
    Bonne chance
    1. Bonjour

      C'est que ta requête se passe mal. Pour savoir pourquoi, teste aussi l'erreur sur cette requête ;

      $result = mysql_query($q, $this->connection) or exit(mysql_error());
      1. je test et je te dis ca !
    2. Voila exactement :
      "Raid to 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"
      1. et après plein d'erreurs :
        Warning: mysql_fetch_array() expects parameter 1 to be resource, boolean given in /web/csasoftwargame/Forum/GameEngine/Database/db_MYSQL.php on line 3420

        Warning: mysql_fetch_array() expects parameter 1 to be resource, boolean given in /web/csasoftwargame/Forum/GameEngine/Database/db_MYSQL.php on line 643

        Warning: mysql_fetch_assoc() expects parameter 1 to be resource, boolean given in /web/csasoftwargame/Forum/GameEngine/Database/db_MYSQL.php on line 668

        Warning: Invalid argument supplied for foreach() in /web/csasoftwargame/Forum/GameEngine/Database/db_MYSQL.php on line 3693

        Warning: mysql_fetch_array() expects parameter 1 to be resource, boolean given in /web/csasoftwargame/Forum/GameEngine/Database/db_MYSQL.php on line 601

        Warning: mysql_fetch_array() expects parameter 1 to be resource, boolean given in /web/csasoftwargame/Forum/GameEngine/Database/db_MYSQL.php on line 601
    3. ajoute echo $q; pour voir quelle est exactement ta requête. Il y a des chances que $wref soit vide
      1. SELECT x,y FROM s1_wdata where id = 23813SELECT x,y FROM s1_wdata where id = 23813

        et

        SELECT x,y FROM s1_wdata where id = 23813SELECT x,y FROM s1_wdata where id = 24014
        1. Voici ce qu'il y a dans la table wdata id =23813 :
          fieldtype : 3
          oasistype : 0
          x : -6
          y : -18
          occupied: 1
          image : t2
      2. Tu n'as plus le message d'erreur du or exit(mysql_error()); ? il fallait le laisser. sinon on tombe sur de nombreuses autres erreurs et on mélange les problèmes. Réglons d'abord la première.
        1. si je l'ai encore voila ce qu'il y a marqué au lieu de l'autre :
          "Raid to 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"

          et le résultat du echo :
          SELECT x,y FROM s1_wdata where id = 23813SELECT x,y FROM s1_wdata where id = 23813
          1. Dans quel ordre sont ces messages à l'écran ?
            Et à quel endroit as-tu mis le echo $q ? Avant le $result = mysql_query(.., j'espère.
            1. Donc voici la requête qui ne marche pas :
              "SELECT x,y FROM s1_wdata where id = 24014?SELECT x,y FROM s1_wdata where id = 23813 "

              Et voici le resultat du echo :

              SELECT x,y FROM s1_wdata where 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
              1. Donc en fait la requête marche bien 2 fois, et la troisième fois il n'y a rien dans $wref.
                Il faut remonter à l'endroit d'où ta fonction getCoor est appelée et voir pourquoi le paramètre est vide, mais ça on ne peut pas le diagnostiquer sans une vue d'ensemble du programme.