2010-01-25 12 views
6

query Example alcuni tutorial sempre terminare con:Dovresti sempre terminare le query di mysql con "o morire?"

or die(mysql_error()); 

vedo perché si dovrebbe a volte vuole fare questo, ma anche usare questo per le query che in realtà non dovrebbe causare un problema. È una buona pratica usare sempre questo o lo stanno facendo solo per aiutarti a eseguire il debug mentre impari?

risposta

0

La parola "non dovrebbe" è male qui. Le query che non dovrebbero presentare problemi possono comunque essere influenzate da fattori esterni, ad es. connessione al database che scende.

0

ma anche usare questo per le query che in realtà non dovrebbe causare un problema

Anche il più semplice SELECT * FROM FOO può causare un problema se la rete tra il server Web e il server di database cade. È una buona pratica, perché quando si ha a che fare con sistemi esterni come i database, non si può mai presumere che qualcosa sia "sicuro".

Nel codice di produzione, è possibile che non si desideri utilizzare die() per gestire gli errori: è possibile eseguire un codice personalizzato per gestirlo. In ogni caso, dovresti sicuramente gestire l'errore in un modo o nell'altro, e die() è un buon modo per iniziare.

1

Dipende da cosa intendi per "non dovrebbe essere un problema".

Se si intende "bene non fallirà", cosa succede se il server del database non è in linea?

Solo se si intende "Non importa se fallisce o meno, lo script può continuare a funzionare senza problemi" che si dovrebbe considerare di non avere lo or die lì.

0

Non necessariamente bisogno

or die() 

Ma si dovrebbe avere un qualche tipo di sistema di gestione degli errori. Se non ne hai ancora uno, lo aggiungerei alle mie domande, anche a quelle semplici.

MODIFICA: Per chiarire, con "esso" intendo l'istruzione o die().

13

NO.

Evitare che a tutti i costi!

  1. E 'un messaggio terribile per mostrare un utente finale
  2. mysql_error può esporre informazioni che non si desidera avere la possibilità
  3. v'è alcun modo per gestire l'errore, vale a dire il ripristino.

Immagina un database di transazioni: il tuo cliente invia denaro, quindi devi modificare due tabelle (due query).

Il primo trasferisce denaro da X a Y e ha esito positivo. Il secondo deve sottrarre Y da X fallisce.

Non è possibile annullare la transazione e l'errore non viene registrato. Effettivamente rendendo l'utente Y felice e X a sinistra confondono dove sono finiti i soldi ...

Utilizzare una gestione degli errori ragionevole per le query - sia creare una classe che gestirà che per te o utilizzare ORM.

+0

completamente d'accordo - l'uso di 'or die()' dovrebbe essere seguito da manuali e libri, e dovrebbe essere mostrata una corretta gestione degli errori (anche se barebone). – HorusKol

+0

Ok, per favore, per favore, istruisci il rookie OP e questo rookie commenter su dove girare per una solida gestione degli errori PHP che è indipendente dal framework? – Drew

+0

@Andrew, Usare un framework è un buon inizio: una volta che hai dimestichezza con il framework, puoi dare un'occhiata alle loro fonti e vedere come gestiscono gli errori. – LiraNuna

0

Stavo pensando che non sarebbe male usarlo verso la parte superiore delle tue pagine dove mai ci sono le informazioni di connessione al database, usalo quando provi a connetterti al solo database.

Ma perché noi su ogni query che esegui! Ovviamente se è collegato al database, se sai Non dovrebbero verificarsi altri errori quindi non vedrei perché non potresti evitare di usarlo più di Una volta per pagina !!!

Problemi correlati