Autor | Zpráva | ||
---|---|---|---|
zedna Profil |
#1 · Zasláno: 23. 6. 2011, 14:01:17 · Upravil/a: zedna
ahoj zobrazuje se mi chyba a ani tady v diskuzích mi nepomohla jediná rada
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /volume1/web/spanox.cz/backend.php on line 127 na mem serveru se tato chyba zobrazuje a používám mysql 5.1.34, na hostingu se mi chyba ale nezobrazuje a tam je mysql 5.1.52 chyba je někde v tomto kódu $this->counter++; return $this->result; } function fetch_row($query) { $this->result = mysql_query($query); $this->row = mysql_fetch_array($this->result); $this->counter++; return $this->row; } function fetch_array($query) { $this->row = mysql_fetch_array($query); return $this->row; } function num_rows($query) { $this->result = mysql_query($query); $this->num_rows = mysql_num_rows($this->result); $this->counter++; return $this->num_rows; } function count_queries() { return $this->counter; } ale když tam cokoliv změním, tak mi to killne celý script na adrese můžete poradit v čem by mohla být chyba? článek to sice vypíše ale někde s chybou a někde bez chyby |
||
Tori Profil |
#2 · Zasláno: 23. 6. 2011, 14:16:48 · Upravil/a: Tori
Neměla by metoda fetch_array vypadat takhle?
function fetch_array($query) { $this->result = mysql_query($query); $this->row = mysql_fetch_array($this->result); return $this->row; } |
||
zedna Profil |
#3 · Zasláno: 23. 6. 2011, 14:52:34
jo já jsem se do toho už docela zamotal, ale proč to teda někde funguje a někde blbne?
|
||
Tori Profil |
#4 · Zasláno: 23. 6. 2011, 14:59:05
Podle chybové hlášky a čísla řádku, co jsem tak zběžně koukla na odkaz, zlobila jen tahle metoda. Když to opravíte, je tam ještě jinde problém?
|
||
zedna Profil |
#5 · Zasláno: 23. 6. 2011, 15:19:17
když jsem to opravil, tak se mi pak zobrazila asi na 6 místech
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /volume1/web/spanox.cz/backend.php on line 252 if(empty($row_super_admin['0'])) { $this->super_admin = 0; $result_admin_mods = $db->query("SELECT * FROM modules WHERE type = 'admin_module' ORDER BY module ASC"); while($row_admin_mods = $db->fetch_array($result_admin_mods)) { $groups_admin = $db->fetch_row("SELECT groups FROM modules WHERE id = '" . $row_admin_mods['id'] . "'"); $groups_admin = $groups_admin['0']; $groups_admin_array = explode(":", $groups_admin); $x = 0; while(!empty($groups_admin_array[$x])) { $user_groups = $db->fetch_row("SELECT * FROM users WHERE id = '$this->userid'"); $user_groups = $user_groups['groups']; $user_groups_array = explode(":", $user_groups); if(in_array("" . $groups_admin_array[$x] . "", $user_groups_array)) { $this->admin = 1; } řádek 252 je ten poslední z tohoto kódu |
||
Tori Profil |
#6 · Zasláno: 23. 6. 2011, 15:55:07 · Upravil/a: Tori
Připadá mi, že ta DB vrstva byla napsaná nekonzistentně: všechny metody fetch_* dostávají SQL dotaz a vrací jeden řádek výsledku, kromě fetch_array, která měla dostat už výsledek z $db->query. Jestli vám to tak vyhovuje, tak jen zkontrolujte všechny výskyty $db->fetch_array, jestli do nich jde řetězec nebo resource (taky nevidím, jak řešíte možnost chyby v dotazu, kdy $db->query vrátí FALSE).
Další varianta je sjednotit to, aby všechny metody fetch_* dostávaly jen SQL dotaz, a doplnit ještě metodu, která dokáže vrátit všechny řádky výsledku (až už naráz jako 2D pole, nebo po jednom v cyklu). |
||
zedna Profil |
#7 · Zasláno: 24. 6. 2011, 07:59:17 · Upravil/a: zedna
tak jsem přišel na ten pravý důvod, bylo to mojí nepozorností, při selectu kategorií jsem omylem přidal jednu podmínku, kterou jsem měl při selectu článků
|
||
Časová prodleva: 13 let
|
0