Si un registro está vacío, el registro no existe... AL menos mirandolo del ldado de BBDD.
Por otro lado lo que dices no tiene sentido.
Cuando usas OR, devuelve aquellos registros donde al menos UNO de ellos cumple con la condición. Lo que no te devolverá es aquel registro donde ese campo esté vacío. Eso es obvio.
Pero para que no te devuelva
ninguno, TODOS los registros deben estar vacios, o todas las tres variables deben haber llegaod vacías y los registros tener datos, o bien ningún registro cumple las condiciones de las variables.
Nota Bene: Recuerda que un registro donde el campo sea NULL, no será devuelto ni siquiera si la variable está vacía, porque para la base de datos, NULL y caracter vacío son cosas diferentes.
¿Se entiende?
Como verás hay cosas que exceden la visión del problema desde pHP. Son específicas de BBDD.
Para que te devuelva si cumple con una de las condiciones, o el campo esté vacío, o bien sea NULL, la sintaxis es diferente:
Código SQL:
Ver originalSELECT *
FROM mibd
WHERE location ='$locUno'
OR location ='$locDos'
OR location ='$locTres'
OR location =''
OR location IS NULL
ORDER BY id
O simplificando la sintaxis:
Código SQL:
Ver originalSELECT *
FROM mibd
WHERE location IN('$locUno' , '$locDos', '$locTres', '')
OR location IS NULL
ORDER BY id
ESo.. asumiendo que "location" es un campo de caracteres (CHAR o VARCHAR), porque si es numérico la cosa cambia.