La respuesta Es en realidad en el PHP documentation: precedencia
"Si dos o más columnas del resultado tienen los mismos nombres de campo, la última columna se llevará . para acceder a la otra columna (s) del mismo nombre, que sea necesario para acceder al resultado con índices numéricos utilizando mysql_fetch_row()
o añadir nombres de alias. Véase el ejemplo en la descripción mysql_fetch_array()
acerca de los alias. "
ayuda especialmente mysql_fetch_array()
parece ser el mejor candidato cuando insisten en el uso de estrellas en la instrucción de selección:
$row = mysql_fetch_array($result, MYSQL_BOTH)
A continuación, se puede hacer referencia a los campos unambigous por $row[name]
y para el ambiguo por $row[col_number]
, pero que limita la portabilidad de su código (tal vez la próxima versión de MySQL va a devolver columnas en un orden diferente?). La solución recomendada es reescribir su consulta y enumerar todos los campos requeridos en lugar de usar estrella y para los ambiguos: use alias.
se obtendría un error que indica columnas ambiguas - la base de datos no puede decir cuál de las dos columnas con nombres idénticos a utilizar. –
@rexem: Eso no es verdad. El SQL es absolutamente correcto, el error ocurriría si la consulta seleccionara explícitamente un nombre de columna que existiera en ambas tablas, pero no especificara el prefijo de la tabla. – quosoo