Commentaar op FAQ

Pagina: 1
Acties:

  • Vulpecula
  • Registratie: April 2001
  • Laatst online: 04-09 04:51
Na aanleiding van [topic=525652] gebruiken. Ziet er beter en verzorgder uit vind ik.

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 28-08 12:00

Janoz

Moderator Devschuur®

!litemod

ff het relevante stukje van die pagina uitgezocht:
OR DIE

"Or die" is hier absoluut niet toegestaan.
Ja het werkt, het stopt je script voordat er ernstige dingen gebeuren, maar waarom zou je je script willen stoppen?
Je kunt veel beter met een IF controleren of iets gelukt is, en als het niet gelukt is met een ELSE een nette foutmelding geven. Op die manier kun je in geval van een fout je pagina nog wel netjes afmaken zodat de gebruiker niet met een halve pagina zit.
Dit is helemaal belangrijk als je MySQL zonder InnoDB tabellen gebruikt. Zonder InnoDB heb je geen transactions. Dat betekent dat je handmatig queries ongedaan moet maken als er iets fout gaat. Na een OR DIE is het script gestopt en zit je met corrupte data.
Ik reageer hier straks nog wel ff op aangezien ik nog met een opdracht bezig ben :).

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


  • ACM
  • Registratie: Januari 2000
  • Niet online

ACM

Software Architect

Werkt hier

Dan doe jij het zo toch :?

Bovenstaande code is veel compacter, overzichtelijker en in de meeste gevallen ruim voldoende.

Als je geavanceerdere error-handling nodig hebt is die code in jouw voorbeeld ook niet voldoende, dus dan maakt het weinig uit welk voorbeeld je krijgt en heb je de faq toch al niet meer nodig.

  • D2k
  • Registratie: Januari 2001
  • Laatst online: 31-08 10:19

D2k

[lama]
php zuigt :P

overigens mis je dan als je het echt goed wil doen mysql_close() nog in je code

Doet iets met Cloud (MS/IBM)


  • ACM
  • Registratie: Januari 2000
  • Niet online

ACM

Software Architect

Werkt hier

Op zondag 16 juni 2002 13:45 schreef Janoz het volgende:
Ik reageer hier straks nog wel ff op aangezien ik nog met een opdracht bezig ben :).
Even daarop in gaan:
De or die is hooguit gevaarlijk bij de mysql_query wat DAT betreft.
Bij een select query is dat geblaat over de transacties natuurlijk zinloos en een gecommitte transactie wordt ook met innodb niet zomaar ineens teruggedraaid.

Over het algemeen moet je daar gewoon bij je programmeren om denken, als een query fout opgebouwd blijkt te zijn had je die niet goed genoeg afgevangen kwa fouten en ben je ook fout bezig als je de boel dan nog moet terugrollen.

De or die() is imho vooral gevaarlijk omdat je eigenlijk je connectie niet netjes afgesloten hebt, met mysql gaat dat tegenwoordig wel goed, maar er zijn nog steeds db-modules (o.a.) die niet netjes de *_close krijgen aangeroepen aan het eind van het php script.

Verwijderd

Op zondag 16 juni 2002 13:46 schreef D2k het volgende:
[lama]
php zuigt :P

overigens mis je dan als je het echt goed wil doen mysql_close() nog in je code
doet ie automatisch wel dus :P

  • ACM
  • Registratie: Januari 2000
  • Niet online

ACM

Software Architect

Werkt hier

Op zondag 16 juni 2002 14:56 schreef Mr_Blue het volgende:
doet ie automatisch wel dus :P
Let op het 'echt goed' ;)

Verwijderd

Op zondag 16 juni 2002 15:08 schreef ACM het volgende:

Let op het 'echt goed' ;)
Je kunt natuurlijk wel even je eigen 'die' functie maken, die eerst even de boel netjes achterlaat, en die vervolgens de error geeft (en in een log stouwt?), en het script stopt :)

  • ^Mo^
  • Registratie: Januari 2001
  • Laatst online: 04-11-2025
Op zondag 16 juni 2002 15:14 schreef Cheatah het volgende:

[..]

Je kunt natuurlijk wel even je eigen 'die' functie maken, die eerst even de boel netjes achterlaat, en die vervolgens de error geeft (en in een log stouwt?), en het script stopt :)
[beetje off topic]
Dat loggen kun je in PHP.ini regelen...
code:
1
2
3
4
; Log errors into a log file (server-specific log, stderr, or error_log (below))
; As stated above, you're strongly advised to use error logging in place of
; error displaying on production web sites.
log_errors = On

en verder op dus:
code:
1
2
; Log errors to specified file.
error_log = <path here>

[/beetje off topic]

"There are 10 kinds of people in the world, those who understand binary and those who don't" | Werkbak specs


  • eamelink
  • Registratie: Juni 2001
  • Niet online

eamelink

Droptikkels

Ja, een eigen die functie maken lijkt me inderdaad het beste. Dan kan je even een mooie foutmelding geven.

Nu ligt het er natuurlijk wel aan wat voor site je hebt, als er alleen een search gedaan moet worden, kan je wel gewoon de pagina laten zien met een error, maar als de content van de site in de DB staat, dan is gewoon een simpele foutmelding wel voldoende. Dan werkt het toch niet :)

Je kan ook even met register_shutdown_function() een eigen shutdown functie registreren, kan je gewoon die() gebruiken. :)
Pagina: 1