У меня есть код PHP 5, доступ к таблице MyISAM на сервере MySQL 5. Запрос выглядит следующим образом:
SELECT CONCAT(fName1,' ',mName2,' ',lName3) AS userName
FROM users
WHERE level > 10
Когда нет имени mName, Я ожидаю вывод, например, "fname lname", но вместо этого я получаю "" (пустую строку) (количество возвращаемых строк верное). Где я ошибаюсь?
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']
}
Соответствующая часть структуры таблицы:
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;
(также, этот способ (конкатенация столбцов в MySQL) хорошая идея, или мне нужно получить столбцы для PHP и присоединиться к ним там?)
Оказывается, что я возвращаю NULL; PHP обрабатывает возвращенную NULL и пустую строку ("") аналогично, вам нужно будет сравнить с ===, чтобы увидеть разницу.