php - saber - Buscando un campo vacío con MySQL
php variable diferente de null (7)
verifique este código para el problema:
$sql = "SELECT * FROM tablename WHERE condition";
$res = mysql_query($sql);
while ($row = mysql_fetch_assoc($res)) {
foreach($row as $key => $field) {
echo "<br>";
if(empty($row[$key])){
echo $key." : empty field :"."<br>";
}else{
echo $key." =" . $field."<br>";
}
}
}
He escrito una consulta para verificar los usuarios con ciertos criterios, uno de ellos tienen una dirección de correo electrónico.
Nuestro sitio permitirá que un usuario tenga o no tenga una dirección de correo electrónico.
$aUsers=$this->readToArray(''
SELECT `userID`
FROM `users`
WHERE `userID`
IN(SELECT `userID`
FROM `users_indvSettings`
WHERE `indvSettingID`=5 AND `optionID`=''.$time.'')
AND `email`!=""
'');
¿Es esta la mejor manera de verificar si hay un campo vacío en SQL? Acabo de probar "IS NOT NULL" y esto todavía devolvió un registro de usuarios sin que ellos tuvieran una dirección de correo electrónico.
La consulta anterior funciona pero por curiosidad me pregunté si lo estoy haciendo de la manera correcta.
Esto funcionará, pero aún existe la posibilidad de que se devuelva un registro nulo. Aunque puede establecer la dirección de correo electrónico en una cadena de longitud cero cuando inserta el registro, es posible que desee manejar el caso de una dirección de correo electrónico NULL entrando al sistema de alguna manera.
$aUsers=$this->readToArray(''
SELECT `userID`
FROM `users`
WHERE `userID`
IN(SELECT `userID`
FROM `users_indvSettings`
WHERE `indvSettingID`=5 AND `optionID`=''.$time.'')
AND `email` != "" AND `email` IS NOT NULL
'');
Hay una diferencia entre una cadena vacía (¡email! = "") Y NULL. NULL es nulo y una cadena vacía es algo.
Podrías usar
TRIM(IFNULL(email, '''')) > ''''
Sí, lo que estás haciendo es correcto. Está revisando para asegurarse de que el campo de correo electrónico no sea una cadena vacía. NULL significa que falta la información. Una cadena vacía ""
es una cadena en blanco con la longitud de 0.
Puede agregar el cheque nulo también
AND (email != "" OR email IS NOT NULL)
Si desea buscar todos los registros que no son NULL, y que están vacíos o tienen cualquier cantidad de espacios, esto funcionará:
LIKE ''%/ ''
Asegúrate de que haya un espacio después de la barra invertida. Más información aquí: http://dev.mysql.com/doc/refman/5.0/en/string-comparison-functions.html
Un campo vacío puede ser una cadena vacía o NULL
.
Para manejar ambos, use:
email > ''''
que puede beneficiarse del acceso al range
si tiene muchos registros de correo electrónico vacíos (ambos tipos) en su tabla.