2009-10-19 23 views
9

qui è la variabile descrizione che sto facendo eco dal mio tavolo:Come verificare se la voce mysql è vuota in PhP?

$description = mysql_result($result,$i,"description"); 

a volte il $-esimo disco è vuoto e non ha tutti i dati in esso/no descrizione.

Quello che voglio fare è echo "Nessuna descrizione disponibile" per i record che sono vuoti

if (isset($description)){ echo "No description available";} 
else{ echo $desctipion;} 

Il mio tentativo non funziona anche se, come allora fa eco Nessuna descrizione disponibile per ogni record anche quelli che aren' t vuoto.

Qual è la risposta?

risposta

25

isset($description) si tradurrà vero perché $ descrizione è ancora impostato, anche se il suo valore è 'vuoto'. Quello che devi usare è empty.

if (empty($description)) { 
    echo "No description available"; 
} else { 
    echo $description; 
} 
+0

Funziona perfettamente, grazie mille. –

+0

Non hai mai bisogno di usare vuoto! – dynamic

+2

@ yes123: vorresti approfondire su questo? Non ne hai BISOGNO per ogni account, ma perché non usarlo? – Sk8erPeter

0

utilizzare la funzione mysql_affected_rows:

$qtd = mysql_affected_rows($result); 
+1

Questo non fa differenza se la colonna contiene un valore NULL. –

+0

Scusa, ho letto male la domanda. La tua risposta è corretta +1 Per te :) – Cesar

2

Dipende da cosa intendi.

mysql_result restituisce FALSE in caso di errore, che si verificherebbe se si specificava un campo non valido (riga, campo). Per verificare ciò, si consiglia di utilizzare l'operatore identity ===, che controlla sia il valore che il tipo. L'operatore di uguaglianza ==, la funzione empty() e la valutazione condizionale di un'istruzione if controllano tutti il ​​valore ma non il tipo.

Questo significa che utilizzando uno di questi metodi non c'è differenza tra i vari valori che tutti equiparare Boolean FALSE, come stringhe vuote, array vuoti, la stringa '0', e il valore NULL.

Quindi, se si vuole essere veramente approfondita su di esso si potrebbe fare qualcosa di simile al seguente:

if ($description === FALSE) { 
    throw new Exception("The row $i was out of range in query $query."); 
} else if ($description === NULL) { 
    // assuming that the description field has a default value of NULL 
    // * this one I'm not sure about.. the documentation for mysql_result claims 
    // that it returns a string, so this may never happen. 
    // It's left as an exercise for the reader. 
    throw new Exception("Uninitialized value in result row $i of db query $query"); 
} else if ($description === '') { 
    echo "No description available"; 
} else { 
    echo $description; 
} 

Dal empty() rendimenti true sotto un simile insieme di condizioni di uguaglianza (==) con FALSE, questo più il rigoroso controllo del tipo sarebbe particolarmente importante nei casi in cui il risultato potrebbe essere in realtà "0".

Apparentemente non sono autorizzato a pubblicare più di un collegamento ipertestuale, quindi non è stato possibile collegarmi alla documentazione per gli operatori di confronto ("http://php.net/manual/en/language.operators.comparison.php") o la funzione vuota ("http://php.net/empty"). Fortunatamente la loro sicurezza è relativamente lassista. Mwuh Hah!

Problemi correlati