You will need to name these specific columns manually to be able to "pick them up" after the while.
Example
$sql = BD::conn()->prepare(
"SELECT
a.campo1, a.campo2, a.campo3, a.campo_igual as a_campo_igual,
b.campo1, b.campo2, b.campo3, b.campo_igual as b_campo_igual
FROM tabela_a a
LEFT JOIN tabela b ON a.campo = b.campo"
);
If you want to add the table as a prefix for each column
So you can take the "equal fields" without problem in while.
// array para informar qual coluna pertence a qual tabela
// irei processar isso depois para formar o apelido "tabela_x_coluna_y"
// é muito provável que este array seja preciso montar manualmente,
// mas irá facilitar sua vida no SELECT
$tabelas = [
'tabela_a' => [
'campo1',
'campo2',
'campo3',
'campo_igual',
],
'tabela_b' => [
'campo1',
'campo2',
'campo3',
'campo_igual',
]
];
// array com as colunas apelidadas, é preenchido no foreach abaixo
// vou usar este array em um implode depois para facilitar o uso da vírgula que separa cada coluna
$columnsSql = [];
foreach ($tabelas as $tabela => $colunas) {
foreach ($colunas as $coluna) {
$colunaDB = $tabela.'.'.$coluna; // é a coluna com prefixo da tabela
$colunaApelido = $tabela.'_'.$coluna; // é a coluna com apelido, para você poder pegar depois no while
$columnsSql[] = $colunaDB.' AS '.$colunaApelido
}
}
$sql = BD::conn()->prepare(
"SELECT ".implode(', ', $columnsSql)."
FROM tabela_a a
LEFT JOIN tabela b ON a.campo = b.campo"
);
UPDATING
According to the documentation on the PDO connection you can set the attribute PDO::ATTR_FETCH_TABLE_NAMES
for:
Uses the table name as prefix in each column name returned in the result set. The table name and column name are separated by a decimal character (.). Support for this attribute is at driver level; it may not be supported by your driver.
Credits: that answer and this one.
If they are tables with many columns, there is no easier solution?
– Leo Letto
@Leoletto Unfortunately not, unless you want to change all your query manually so that every column prefixes the table name.
– Edson Horacio Junior
Is there a reference link or could you help me understand how I can do this?
– Leo Letto
@Leoletto edited the answer with the code that adds the table as a prefix, see if it helps you.
– Edson Horacio Junior
@Leoletto updated the answer with a much more practical option, take a look please and see if it works.
– Edson Horacio Junior