ugrás a tartalomhoz

Mi az a "Resource id #12"?

Fedor · 2006. Szep. 22. (P), 17.13
Helló!

Van egy olyan lekérdezésem, amelynek a where feltétele változóktól függően bővülhet (a felhasználó különböző, lekérdezést szűkítő feltételeket adhat meg). Két ilyen változóm van, ami így néz ki:

<?php
if ($kat1!="") :
    $and1="AND marka=".$kat1;
endif;
if ($kat2!="") :
    $and2="AND kategoria=".$kat2;
endif;

$q="SELECT *
    FROM akciok
    WHERE aktiv =1
    ".$and1."
    ".$and2."
    ORDER BY id DESC";
?>
Na most, minden gond nélkül lemegy a lekérdezés minden esetben, ki is tudom iratni az eredményt, de abban az esetben, ha a $kat1 nem üres, akkor kiírja azt is, hogy "Resource id #12". Én ezzel még nem találkoztam, mi ez? Valami hibaüzenetnek tűnik, de mit jelez? És hogy lehet eltünteni?

Előre is köszi a segítséget.

Üdv,
Fedor
 
1

maga a mysql kapcsolat

Anonymous · 2006. Szep. 22. (P), 17.45
ha például mysql-hez kapcsolódsz

<?php
$kapcsolat=mysql_connect('host','nev','jelszo');
?>
és után kiíratod a kapcsolat változó tartalmát, akkor kaphatsz ilyesmi értéket: Resource id #n. úgyhogy annak nézz utána, hogy azt a változót hol íratod ki.
a mysql függvényeknek általában van egy elhagyható paramétere, ez a 'resource link_identifier'.

gex
2

Ettől igazán nem lettem okosabb...

Fedor · 2006. Szep. 25. (H), 13.49
A mysql kapcsolódás egy include fájlban van, az biztos állandó. Egy hónapok óta futó weboldal továbbfejlesztéséről van szó.

Ha jól értem, ez a telepítéskor adhat információt, de ez egy bejáratott rendszeren a sokszázadik mysql lekérdezésem (több honlapot is menedzselek), és mind az én localhostomon, mind az éles szerveren jelentkezik, de csak egy bizonyos lekérdezés egy bizonyos verziójánál. Ráadásul továbbra se tiszta, hogy akkor most miért iratódik ki, és mikép is tudnám eltüntetni.
3

őszinte részvétem

Anonymous · 2006. Szep. 25. (H), 15.58
Ha jól értem, ez a telepítéskor adhat információt

ezt nem értem. minden alkalommal, mikor létrehozol egy kapcsolatot az adatbázisszerverrel, létrejön a kapcsolat azonosítója. ezt tárolja a $kapcsolat változó a kódban (1. hozzászólásban).

de ez egy bejáratott rendszeren a sokszázadik mysql lekérdezésem (több honlapot is menedzselek), és mind az én localhostomon, mind az éles szerveren jelentkezik, de csak egy bizonyos lekérdezés egy bizonyos verziójánál.

ez a resource id #n teljesen független minden lekérdezéstől (még ha több százat is csinálsz), egyetlen dologhoz tartozik, az adatbázisszerverrel való kapcsolódásodhoz.
ha mind a localhostodon, mind az éles szerverden látod ezt a problémát, akkor még valószínűbb, hogy te vagy az okozója, nem gondolod?
ha pedig tudod, hogy melyik lekérdezésed melyik verziója esetén jelentkezik ez a hiba, akkor talán arrafelé keresgélj a kódban. nézd meg hogy hozod létre a kapcsolatot, milyen változóban tárolod a kapcsolat azonosítóját, és utána keress rá arra a változóra.

Ráadásul továbbra se tiszta, hogy akkor most miért iratódik ki, és mikép is tudnám eltüntetni.

kód nélkül nekem sem fog menni.

gex
4

elbeszélünk egymás mellett

Fedor · 2006. Szep. 25. (H), 17.04
Ha az adatbáziszerverhez való kapcsolódást változatlanul használom aweboldal összes többi részén külső fájlból beinclude-olva, akkor nem hiszem, hogy a kapcsolatlétrehozással van gond, de ha gondolod:

<?php
function db_open()
	{$connect=mysql_connect(_DB_HOST, _DB_USER, _DB_PASS);
	if (!$connect) : die ("<br><b>Nem sikerült az adatbázisszerhez kapcsolódni:<br><i>".mysql_error()."</i></b>");
	else : mysql_select_db(_DB) or die ("<br><b>Nem sikerült az adatbázishoz kapcsolódni:<br><i>".mysql_error()."</i></b>");
	endif;}

db_open();
?>
A lekérdezéssel lehet, pont ezért vetettem fel a problémát, mert nem tudom, hogy mi vele a gond? A lekérdezést láthatod a topicindítóban, phpmyadmin-ban lefutattva nem jelez ki hibát, a weboldalba beillesztve simán lefut, ki tudom iratni az eredményt, csak még pluszban megjelenik ez is.
5

resource id

Hojtsy Gábor · 2006. Szep. 25. (H), 19.02
Lássuk ezt a kódot.
<?php
$file = fopen(...);
echo $file;

$conn = mysql_connect(...);
echo $conn;

$img = imagecreate(....);
echo $img;

$res = mysql_query(...);
echo $res;
?>
Ezek sorban teljesen normális módon ki fogják írni, hogy Resource Id#1, Resource Id#2, Resource Id#3, Resource Id#4. A PHP ilyen erőforrás azonosítókkal kezeli a képeket, adatbázis kapcsolatokat, adatbázis eredményeket, fájlokat, stb. Ha kiíratod, ezt kapod. Nem kell kiíratni, ha nem erre vagy kíváncsi. Ezt szúrtad el a kódban.
7

erre nem gondoltam

Anonymous · 2006. Szep. 25. (H), 19.11
túlságosan a mysql-re koncentráltam, nem voltam elég körültekintő, tényleg lehet más is.

gex
6

tényleg elbeszélünk

Anonymous · 2006. Szep. 25. (H), 19.09
mint mondtam, a kiírt érték az adatbázisszerverrel való kapcsolatod azonosítója. nem mondtam, hogy a csatlakozással van a gond, vagy te láttál ilyet? módosítsd a függvényedet:

<?php
function db_open()
    {$connect=mysql_connect(_DB_HOST, _DB_USER, _DB_PASS);
    if (!$connect) : die ("<br><b>Nem sikerült az adatbázisszerhez kapcsolódni:<br><i>".mysql_error()."</i></b>");
    else : mysql_select_db(_DB) or die ("<br><b>Nem sikerült az adatbázishoz kapcsolódni:<br><i>".mysql_error()."</i></b>");
    endif;
    echo $connect;/*ennyi az egész*/}

db_open();
?>
így mindig ki fogja írni a kapcsolatod, és ha arra az oldalra mész ahol mindig fellép a hiba, kétszer fogod ugyanazt látni, ha nem tévedek.

gex
8

Oké, megvan

Fedor · 2006. Szep. 26. (K), 13.48
Na nagy nehezen megtaláltam. Szokásom a myql lekéréseket berakni egy változóba, hogy ki tudjam íratni, ha hibakeresésre van szükség:

<?php
$q="SELECT * FROM adat_tabla";
$sql=mysql_query($q);
?>
Hát most, a fenti példánál maradva, nem a $q elé került az echo, hanem véletlenül a $sql elé. Figyelmetlenségemnek köszönhetően viszont mélyült az elméleti tudásom. :-)

Köszi.