Tengo el código PHP 5 accediendo a una tabla MyISAM en el servidor MySQL 5. La consulta es el siguiente:MySQL devuelve un campo vacío: CONCAT (nonEmpty1, empty2, nonEmpty3) = NULL
SELECT CONCAT(fName1,' ',mName2,' ',lName3) AS userName
FROM users
WHERE level > 10
Cuando no hay MNAME rellenado, estoy esperando una salida como "fnombre lname", pero me estoy haciendo "" (cadena vacía) en lugar (el número de filas devueltas es correcto). ¿Dónde estoy cometiendo un error?
código PHP:
<?php
$result = mysql_query($the_above_query);
while ($result_row = mysql_fetch_assoc($result)) {
// do stuff with the name
// except I'm getting empty strings in $result_row['userName']
}
parte relevante de la estructura de tabla:
CREATE TABLE users {
/* -snip- */
`fName1` varchar(50) default NULL,
`mName2` varchar(50) default NULL,
`lName3` varchar(50) default NULL,
`level` int(11) default 0,
/* -snip- */
} ENGINE=MyISAM DEFAULT CHARSET=utf8;
(también, es de esta manera (concatenación columna en MySQL) es una buena idea, o debería ir a buscar las columnas de PHP y unirse a ellos allí)
Resulta que me estaba volviendo un NULL; PHP trata un NULL devuelto y una cadena vacía ("") de manera similar, tendría que comparar con === para ver la diferencia.
agradable encontrar en 'CONCAT_WS()' – redolent