2009-10-19 25 views
9

aquí es la variable Descripción Me hago eco de mi mesa:¿Cómo comprobar si la entrada de mysql está vacía en PhP?

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

veces el $ i-ésimo registro está vacío y no tiene ningún datos en ella/no hay una descripción.

Lo que quiero hacer es echo "No hay descripción disponible" para los registros que están vacíos

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

Mi intento no funciona, ya que aunque se hace eco de La descripción no está disponible para todos los registros, incluso los que aren' t vacio

¿Cuál es la respuesta?

Respuesta

25

isset($description) resultará cierto porque Descripción $ fotografías está ajustado, a pesar de que su valor es 'vacío'. Lo que necesita usar es empty.

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

Funciona perfecto, muchas gracias. –

+0

¡Nunca necesita usar Empty! – dynamic

+2

@ yes123: ¿podrían explicar esto? No lo NECESITA en cada cuenta, pero ¿por qué no usarlo? – Sk8erPeter

0

utilizar la función mysql_affected_rows:

$qtd = mysql_affected_rows($result); 
+1

Eso no hará la diferencia si la columna contiene un valor NULL. –

+0

Lo siento, leí mal la pregunta. Tu respuesta es correcta +1 Para ti :) – Cesar

2

Depende de lo que quiere decir.

mysql_result devuelve FALSE en caso de error, lo que sucedería si especificara un inválido (fila, campo). Para verificar esto, querrá usar el operador de identidades ===, que verifica tanto el valor como el tipo. El operador de igualdad ==, la función empty() y la evaluación condicional de una instrucción if comprueban el valor pero no el tipo.

Esto significa que el uso de uno de esos métodos no hay diferencia entre diversos valores que todos equivalen a Boolean FALSE, como cadenas vacías, matrices vacías, la cadena '0', y el valor NULL.

Así que si quieres ser muy cuidadoso al respecto que podría hacer algo como los siguientes:

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; 
} 

Desde empty() vuelve true bajo un conjunto similar de condiciones a una igualdad (==) con FALSE, esto más estricto en su verificación de tipo sería especialmente importante en los casos en que el resultado podría ser realmente "0".

Aparentemente no tengo permiso para publicar más de un hipervínculo, por lo que no pude vincular a la documentación para operadores de comparación ("http://php.net/manual/en/language.operators.comparison.php") o la función vacía ("http://php.net/empty"). Afortunadamente su seguridad es relativamente laxa. Mwuh Hah!

Cuestiones relacionadas