Ho codice PHP 5 che accede a una tabella MyISAM su server MySQL 5. La query è simile al seguente:MySQL che restituisce un campo vuoto: CONCAT (nonEmpty1, empty2, nonEmpty3) = NULL
SELECT CONCAT(fName1,' ',mName2,' ',lName3) AS userName
FROM users
WHERE level > 10
Quando non c'è MNAME compilato, mi aspetto di uscita come "nome cognome", ma sto ottenendo "" (stringa vuota) invece (il numero di righe restituite è corretta). Dove sto facendo un errore?
codice 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 rilevante della struttura della tabella:
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;
(anche, è in questo modo (colonna concatenazione in MySQL) una buona idea, o devo recuperare le colonne PHP e unisciti a loro?)
Si scopre che stavo tornando un NULL; PHP considera un NULL restituito e una stringa vuota ("") allo stesso modo, dovresti confrontare con === per vedere la differenza.
Bello trovare su 'CONCAT_WS()' – redolent