Mi lehet a hiba?
Mi lehet a hiba az alábbiakban, mire javítsam őket?
if(defined('DB_DETAILS') && $c && !$error_log) {
if(!$_SESSION['setting'])
{
$setq = mysql_query("SELECT * FROM settings");
while($r=mysql_fetch_array($setq))
{
$set[$r[set_name]] = $r['set_value'];
$_SESSION['setting'][$r[set_name]] = $r['set_value'];
}
} else {
$set = $_SESSION['setting'];
}
a következő:
function mysql_ver() {
$output = shell_exec('mysql -V');
preg_match('@[0-9]+\.[0-9]+\.[0-9]+@', $output, $version);
return $version[0];
}
szerintetek mi lehet a hiba? :(
és ebbe?
3)
session_start();
include_once('lib/lib.php');
include_once('lib/configuration.php');
$ddir = THDIR.$do->get_file_url();
include($ddir);
if(file_exists(HEADER)) { include_once(HEADER); }
if($contents) { print $contents; }
if(file_exists(FOOTER)) { include_once(FOOTER); }
?>
Mondjuk egy fokkal egyszerűbb lenne, ha bemásoltad volna a hibaüzenetet...
De ami feltűnt:
1. részlet
1. set_name az egy állandó? Mert ha nem, akkor így kéne használni: $r['set_name']
2. Nem tudom, mennyire teljes a kód, de a végéről hiányzik egy záró }
3. $c és $error_log definiálva van? $_SESSION-nal definiálva van a 'setting' eleme?
4. Egy jó tanács: ne használd a mysql_* függvényeket, elavultak. Nézz utána ennek: mysqli.
2. részlet
Ugye viccelsz? exec()-et futtatni ezért? Valószínűleg pont azért nem működik, mert nem engedélyezett ez a függvény a szerveren.
Helyette javaslom:
3. részlet
1. A hivatkozott fájlok léteznek, jó helyen keresed őket?
2. Minden változó és állandó definiálva van?
3. $do->get_file_url(); Ez kritikus, ha a $do nem objektum típusú.
Mégegy hiba:
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /lib/configuration.php on line 31
An error occured while trying to process the settings, Please re- access the site later or consult the administrator.
31.sor: while($r=mysql_fetch_array($setq))
mysql_query("SELECT * FROM settings");
Ide nem kéne még egy változó ami adatbázis kapcsolatot tartalmaz?
Egyébként ha ennyi idő megoldanod egy problémát akkor nyugodtan átírhatnád msqli-re, mert ezt lassan a szerverek nem is fogják támogatni.
Önmagában ez a lekérdezés nem rossz. Listázod a settings tábla tartalmát.
A hiba a $setq változóval van:
"supplied argument is not a valid MySQL result resource"
tehát csak egy bizonyos adattípust, az ún. resource-t fogadja el a függvény (mysql_fetch_array) argumentumként. Ha rendesen értéket adtál a $setq-nak (márpedig úgy tűnik, hogy igen), akkor a
mysql_query("SELECT * FROM settings");
tér vissza neked rossz értékkel. Ez egy SELECT-es kérésnél akkor fordul elő, ha hiba van az adatbázis oldalon a lekérdezéssel, jelen esetben csak arra tudok következtetni, hogy nem létezik az adatbázisban a settings tábla, illetve nincs hozzá jogosultságod, esetleg nincs is megfelelő MySQL kapcsolatod (de az már a mysql_connect és a a mysql_query sorában is dobna 1-1 hibát).
Mivel a MySQL belső hibái nem PHP hibák, nem fogja neked semmilyen error szinten kiírni a PHP, mi a gond magával a lekérdezéseddel, ezt neked kell kérned. Ezért minden MySQL lekérdezést (SELECT) nagyjából így érdemes megvalósítani:
$setq = mysql_query("a te MySQL lekérdezésed")
if (!$setq) {
echo mysql_error(); //persze ezt csak a tesztelés alatt érdemes echo-zni, később, éles verzióban egy általános "adatbázis hiba" szöveget érdemes kiírni, és magát a hibát valahogy naplózni kell, hogy csak te férj hozzá
die; //ezzel is érdemes óvatosan bánni, hogy a felhasználói élmény ne csökkenjen, mindenesetre valahogy mindenképp meg kell akadályozni, hogy a $setq-val már ne történjen semmi, ami mysql_*
}
//ezután rendesen mehetsz tovább
while ($r = mysql_fetch_array($setq)) {
//blabla
}
Persze továbbra is fenntartom, hogy felejtsd el a mysql_* függvényeket, állj át a mysqli-re, ugyanis egyrészt optimalizált, illetve lehetőséged van biztonságod lekérdezésekre, másrészt a másikat hamarosan nem fogja támogatni semmi
Köszi, ezek megoldódtak. Még egy utolsó hibát jelez:
Warning: in_array() [function.in-array]: Wrong datatype for second argument in /templates_c/ModernBlue/824ad545e477fa61ed63fadf13980e20cc3cc42b.file.footer.tpl.php on line 33
És ezt a hibát végig 38-ig írja
32-39. sor:
<div class="processorlist">
<?php if (in_array(2,$_smarty_tpl->tpl_vars['gatewaylist']->value)){?><img src="./templates/ModernBlue/css/images/pp.gif" /><?php }?>
<?php if (in_array(1,$_smarty_tpl->tpl_vars['gatewaylist']->value)){?><img src="./templates/ModernBlue/css/images/pz.gif" /><?php }?>
<?php if (in_array(6,$_smarty_tpl->tpl_vars['gatewaylist']->value)){?><img src="./templates/ModernBlue/css/images/stp.gif" /><?php }?>
<?php if (in_array(5,$_smarty_tpl->tpl_vars['gatewaylist']->value)){?><img src="./templates/ModernBlue/css/images/ep.gif" /><?php }?>
<?php if (in_array(4,$_smarty_tpl->tpl_vars['gatewaylist']->value)){?><img src="./templates/ModernBlue/css/images/pm.gif" /><?php }?>
<?php if (in_array(7,$_smarty_tpl->tpl_vars['gatewaylist']->value)){?><img src="./templates/ModernBlue/css/images/py.gif" /><?php }?>
</div>
"Wrong datatype for second argument"
Vagyis megint a rossz adattípus... A 2. argumentumnak mindenképp tömbnek kell lennie: [link] Vagyis
$_smarty_tpl->tpl_vars['gatewaylist']->value
nem tömb típusú.
Kapcsolódó kérdések:
Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!