У меня есть код 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 и пустую строку ("") аналогично, вам нужно сравнить с ===, чтобы увидеть разницу.