« Kukac »

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());
Kommentek RSS ikon
A bejegyzéshez érkezett kommentek, amiket RSS csatornán is követhetsz.
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 :)
marminthogy a pontosvesszot.
Most erre mit mondjak? :D
É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). :)
Jackson: 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.
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
É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.
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?
nekem ob_ is van, meg @ is.

Mefi:ú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.
Balázs: csoda, de csak neked valaki[kukac]valami[pont]hu

Maerlyn: 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.
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/functi[…] ).
Utobbival elkaphato minden ilyen hibauzenet es meghatarozhatod h. mi tortenjen, ertelemszeruen eles rendszeren csak loggolas, debug modban meg kiiratas.
sokat szamit az ido (marmint az oldal generalasa) (ez kimaradt)
b3ck: ? :)

Benjamin: nem tudom, a mefiblog jelenleg átlag 0,05 és 0,1 másodperc alatt generálódik, kukacokkal. Kukacok nélkül ugyanez. :)
Mefi: cachelt v. dinamikus az oldal? (a re=SZAM miert az osszes komment szamat irja? miert nem a posthoz tartozoet? #14? – csak kivancsisagbol)
„…é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.
Remélem általában nem alap mysql modult használ a kollega :)
Benjamin: 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. :)

#suidroot: 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.

Ralesk: mármint hol tetszik gondolni? :)
ha mar kukac es die, akkor inkabb try cacth szerkezet.
rdbms absztrakcióra meg creole (http://creole.phpdb.org/trac/)
Új komment

Itt az adott bejegyzésben elhangzottakhoz szólhatsz hozzá. Ha primitív, csúnya, vagy bunkó erkölcsről teszel tanúbizonyságot, tuti, hogy kimoderállak és rosszat mondok rólad. A hozzászólás nem kötelező, amit írsz vállald föl!

Ezeket az adatokat - ha a böngésződ kezeli a kukikat - csak egyszer kell megadnod, később módosíthatod.

Ha van gravatarod - és a gravataros e-mail-címeddel kommentálsz -, akkor az megjelenik. Ha nincs, vagy nem tudod miaz, akkor olvasd el az útmutatót és regisztrálj.

Neved: E-mail címed (nem jelenik meg): Webszájtod (ha van): Kommented: Mennyi három és egy összege?
Ez védelmi célokat szolgál, szimplán írd be a fenti összeadás összegét!

A kommentedet írhatod nagyobb mezőbe vagy akár formázhatod is, de ha nem szalonképes, akkor moderálom!

Ajánló
Ebben a témában, esetleg ezen a napon voltak még ilyenek is:

Átalakul a mefiblog (2010. július 07., 10:59:14)
Dicséret (2006. április 23., 12:15:20)
ThinkFree (2006. január 03., 06:03:53)

Érdekességek
Száraz számok, pusztán csak tények:

Ez a bejegyzés 1988 napja született, 142 szóból, és 756 karakterből áll. Ajánlhatod bizonyos linkgyűjtő oldalaknak: