A kukac (@
) a PHP-ben egy speciális hibakezelő operátor, mely bizonyos parancsok előtt állva elfojtja az esetleges hibaüzeneteket. Példa a használatára:
@mysql_query("SELECT * FROM `nemletezo_tabla` LIMIT 0,10;");
Ezen lekérés esetén (ha a tábla valóban nem létezik, vagy egyéb hiba merülne föl) nem kapunk hibaüzenetet, és a kód futása nem áll meg. Vagy tudunk például ízlésesen hibát jelezni:
@mysql_query("SELECT * FROM `nemletezo_tabla` LIMIT 0,10;") or die("<span style=\"color: #ff0000;\"><strong>Hiba:</strong></span>".mysql_error());
Tetszett a bejegyzés?
Megköszönöm, ha nyomsz rá egy like-ot vagy megosztod másokkal:
Shamalt
2006. december 13. — 19:44:41
off idezojelen belul elhagyhatod a kettospontot, meg ha mar multkor polemizaltunk a ” es a ‘ hasznalatarol, akkro a query is mehet ‘-be
(a tablanevek ` jelek koze tevese meg a nagybetus sql utasitasok gondolom megszokas kerdese :))
Shamalt
2006. december 13. — 19:45:15
marminthogy a pontosvesszot.
Jackson
2006. december 13. — 19:49:20
Most erre mit mondjak? 😀
Mefi
2006. december 13. — 19:51:35
Én jobbszeretem a dupla idézőjelet. A ` jelek meg abszolút megszokás, az új gépből már kiirtottam őket. Az SQL utasítást meg mindig lezárom ;-vel (valami régebbi szerveren nem fogadta el, csak így, aztán berögződött ez is). 🙂
Mefi
2006. december 13. — 19:52:50
[re=21851]Jackson[/re]: nem kell, nem azért íródott. Valahol el kell kezdeni, te sem úgy ültél a gép elé, hogy kented-vágtad mi az a @ meg mi az a PHP egyáltalán. Sokan keresnek erre, sok helyen kérdezősködik, kérdezték már tőlem is, akkor miért ne.
Vale
2006. december 13. — 20:11:10
különösen hasznos ha valami biztonságosnak szánt kódból kell elnyeletni a felbukkanó hibákat, erre ugye az ob_-os dolgok nem a legjobbak…
már nem is tudom, hogy találtam, talán egy mysql tutorialban volt benne ez a @… or die(…); dolog
Mefi
2006. december 13. — 20:14:05
Én a manualban láttam még anno. Az ob_ egyébként érdekes, mert nem nyel el az semmit (max a vért), ha küldesz egy echot, lazán kiírja, még akkor is, ha nincs ob_get_content, vagy _flush.
Balázs
2006. december 13. — 20:46:00
Most már szólok: mi lenne, ha szépen kreálnál egy reguláris kifejezést, amelyik csak a mélcímekben cseréli a kukacot [kukac]-ra?
Maerlyn
2006. december 13. — 21:25:17
nekem ob_ is van, meg @ is.
[re=21855]Mefi[/re]:úgy érted, h a script végére nem raksz flusht, és kiírja? Mert ha végez, akkor kiírja az ob tartalmát, akkor is, ha nem írod ki explicit, hogy csinálja.
Mefi
2006. december 13. — 21:27:42
[re=21861]Balázs[/re]: csoda, de csak neked valaki@valami.hu
[re=21870]Maerlyn[/re]: mármint ha a kód leáll, akkor is kiírja, ahol épp tart. Nálam is van ob (gzipes tömörítős) meg @-ok is.
b3ck
2006. december 13. — 21:54:53
@@@
Benjamin
2006. december 13. — 21:59:16
Azert ennek a kukacnak a hasznalata igencsak ellenjavallt!!! az or die meg egyenesen borzaszto! Tudom h. nektek sokat szamit de erdemes lenne megnezni egy ADODB-t v. 5-os PHP eseten a PDO_* fuggvenyeket amikkel el lehet fedni a kulonbozo adatbazisokat, esetleg nezzetek meg a set_error_handler-t ( http://hu.php.net/manual/hu/function.set-error-handler.php ).
Utobbival elkaphato minden ilyen hibauzenet es meghatarozhatod h. mi tortenjen, ertelemszeruen eles rendszeren csak loggolas, debug modban meg kiiratas.
Benjamin
2006. december 13. — 21:59:46
sokat szamit az ido (marmint az oldal generalasa) (ez kimaradt)
Mefi
2006. december 13. — 22:06:52
[re=21874]b3ck[/re]: ? 🙂
[re=21875]Benjamin[/re]: nem tudom, a mefiblog jelenleg átlag 0,05 és 0,1 másodperc alatt generálódik, kukacokkal. Kukacok nélkül ugyanez. 🙂
Benjamin
2006. december 13. — 22:30:15
[re=21878]Mefi[/re]: cachelt v. dinamikus az oldal? (a re=SZAM miert az osszes komment szamat irja? miert nem a posthoz tartozoet? #14? – csak kivancsisagbol)
#suidroot
2006. december 14. — 07:04:44
“…és a kód futása nem áll meg…” – azoknál a hibáknál, ahol “kukac” nélkül nem állna meg (E_NOTICE; E_WARNING; stb. szintű problémák), ott nem áll meg “kukaccal” sem, ez tény. Viszont az E_ERROR-t, és barátait (tehát “fatal error-t”) sajnos a kukaccal sem lehet kiküszöbölni, ha a végrehajtás során ilyen keletkezik, akkor a szkript futása félbeszakad, akár volt “kukac”, akár nem.
Ralesk
2006. december 14. — 11:53:40
Remélem általában nem alap mysql modult használ a kollega 🙂
Mefi
2006. december 14. — 12:04:57
[re=21883]Benjamin[/re]: nem az összeset írja, hanem a globális id-t, az meg nem ugyanaz, mint a bejegyzésnél (permalink végett), a bejegyzésnél csak a sorszámot írja (ha törölném a kommentedet, akkor egyel csökkenne). Az oldal meg dinamikus, semmi cache nincsen. 🙂
[re=21887]#suidroot[/re]: de – tudtommal – a komolyabb hibajelzést generáló kifejezéseknél nem is lehet használni. Leginkább tömbök, meg mysql és fájlos dolgoknál javallt.
[re=21888]Ralesk[/re]: mármint hol tetszik gondolni? 🙂
mrbond
2006. december 14. — 13:32:46
ha mar kukac es die, akkor inkabb try cacth szerkezet.
rdbms absztrakcióra meg creole (http://creole.phpdb.org/trac/)