Problem z mySQL

Pozdravljeni rabim pomoč pri napaki :

Warning: mysqlfetcharray() expects parameter 1 to be resource, boolean given in C:\wamp\www\travian\GameEngine\Database\db_MYSQL.php on line 685

Call Stack

Time Memory Function Location

1 0.0034 849848 {main}( ) ..\build.php:0
2 0.4486 12714248 include( 'C:\wamp\www\travian\Templates\Build\16.tpl' ) ..\build.php:250
3 0.4589 12820648 include( 'C:\wamp\www\travian\Templates\Build\16walking.tpl' ) ..\16.tpl:68
4 0.4602 12834800 MYSQL
DB->getCoor( ) ..\16walking.tpl:36
5 0.4603 12835000 mysql
fetcharray ( ) ..\dbMYSQL.php:685

Če je komu kaj malo znano?.

8 odgovorov

napako imaš v SQL queryu in zato fetch array dobi false namesto rezultata.
Možnosti imaš več:

  1. Izpiši raw query in ga prilepi v phpmyadmin. Tam ti bo izpisalo napako.
  2. Na koncu mysqlquery daj še or die(mysqlerror()). Nekako takole bi morali biti:
$res = mysql_query("SELECT * FROM my_table) or die(mysql_error());
2

Napiši še izsek kode, ki izvaja ta query.

1

O tej varjanti sem že nekaj bral po ang. forumih pa mi ni čist jasno.

Če si lahko kdo ogleda : http://wild-travian.cu.cc/floki/ tukaj je text z kodo ki se nahaja v \db_MYSQL.php

1
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);
         }

Iz tabele wdata hočeš potegniti vrednosti x in y za id, ki ne obstaja.

gre se zato da se to zgodi v primeru napada ( če kdo igra oz. pozna travian) ko pošljem recimo svojo vojsko na kordinat kjer je oaza ali vas drugega igralca je ta napaka.

Ne pošiljaj vojske na Slovenijo :)

1

preverjaj $wref pred klicanjem querya, predvsem pa ga daj v enojne narekovaje

wref prveri najprej da je stevilka da se izognes SQL injection-u kot so ti ze svetovali