Вам нужно явно указать имена столбцов вместо того, чтобы делать SELECT *
. Вот как вы могли бы использовать псевдонимы для возврата результатов из двух таблиц, которые имеют несколько конфликтующих имен:
SELECT students.id AS student_id, students.name AS student_name, teachers.id AS teacher_id, teachers.name AS teacher_name FROM students, teachers
Как правило, использование символов подстановки в операторах SELECT является плохой практикой. Конечно, вы можете сэкономить несколько минут, когда впервые пишете какой-то код, но, возможно, вы будете стрелять себе в ногу, если / когда вы измените схему базы данных в будущем. Вы также, вероятно, возвращаете больше данных, чем вам действительно нужно.
Если у вас несколько таблиц с одинаковыми именами полей и вы хотите автоматизировать запрос, есть одна возможность:
$tables = array('table1', 'table2', 'table3', 'table4');
$fields = array('field1', 'field2', 'field3', 'field4');
$select = '';
$from = '';
foreach ($tables as $table) {
if ($from) $from .= ', ';
$from .= $table;
foreach ($fields as $field) {
if ($select) $select .= ', ';
$select .= "$table.$field as {$table}_{$field}";
}
}
$sql = "SELECT $select FROM $from WHERE ...";