Mi lehet a hiba?

Figyelt kérdés

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? :(



2014. okt. 16. 19:33
 1/9 A kérdező kommentje:

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

?>

2014. okt. 16. 19:37
 2/9 anonim ***** válasza:

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:

[link]


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ú.

2014. okt. 16. 19:54
Hasznos számodra ez a válasz?
 3/9 A kérdező kommentje:
Oké, köszi. Megvan. Mi a teendő, ha a phpmyadmin-ba egy nagy méretű sql fájlt szeretnék importálni, és túl nagy, ezért nem engedi? :(
2014. okt. 16. 20:28
 4/9 anonim ***** válasza:
Írasd ki txt fájlba majd lekérdezésekkel vidd fel. De biztos van egyszerűbb megoldás is, azt majd írja más ha erre jár. :)
2014. okt. 16. 21:26
Hasznos számodra ez a válasz?
 5/9 A kérdező kommentje:

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))

2014. okt. 18. 13:40
 6/9 anonim ***** válasza:

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.

2014. okt. 18. 14:43
Hasznos számodra ez a válasz?
 7/9 anonim ***** válasza:

Ö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

2014. okt. 18. 15:58
Hasznos számodra ez a válasz?
 8/9 A kérdező kommentje:

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>

2014. okt. 18. 21:58
 9/9 anonim ***** válasza:

"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ú.

2014. okt. 19. 11:07
Hasznos számodra ez a válasz?

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

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!