Как получить результат из строки MySQL с несколькими столбцами с одинаковым именем с PHP?

select * from A left join B on A.columnc=B.columnd 

результаты, возвращенные выше SQL, будут содержать оба столбца A и B.

И что, если A и B имеют несколько столбцов с тем же именем?

Как получить значение из PHP?

Solutions Collecting From Web of "Как получить результат из строки MySQL с несколькими столбцами с одинаковым именем с PHP?"

Вероятно, вы хотите быть более явным в своем запросе. Таким образом вы можете предоставить псевдонимы для своих столбцов:

 SELECT A.foo as a_foo, B.foo as b_foo FROM A LEFT JOIN B ON A.columnc = B.columnd 

Ответ действительно в документации PHP :

«Если два или более столбца результата имеют одинаковые имена полей, последний столбец будет иметь приоритет. Чтобы получить доступ к другим столбцам (именам) с тем же именем, вам нужно либо получить доступ к результату с числовыми индексами, используя mysql_fetch_row() или добавить псевдонимы. См. пример в mysql_fetch_array() о псевдонимах. "

Especialy mysql_fetch_array() кажется лучшим кандидатом, когда вы настаиваете на использовании звезды в заявлении select:

 $row = mysql_fetch_array($result, MYSQL_BOTH) 

Затем вы можете ссылаться на однозначные поля на $row[name] и на неопределенное значение на $row[col_number] , но это ограничивает переносимость вашего кода (возможно, следующая версия MySQL будет возвращать столбцы в другом порядке?) , Рекомендуемое решение состоит в том, чтобы переписать ваш запрос и перечислить все обязательные поля вместо того, чтобы использовать звезду и для двусмысленных – использовать псевдонимы.

Вы должны использовать псевдонимы столбцов в инструкции select.

В Java + MySQL из объекта ResultSet вы можете использовать, например, getString («a.id»), а также getString («b.id»), если ваш запрос был похож на «SELECT a.id, b.id FROM a, б»

Я не знаю, есть ли что-то подобное в PHP.

С уважением

Это может быть полезно для кого-то: поскольку я использовал некоторые шаблоны, я не мог легко использовать псевдонимы каждый раз, и я хотел, чтобы ассоциативный массив был удобен в использовании. CREDIT PILCROW за его ответ о том, как mysql_fetch_array на объединенные таблицы, но столбцы имеют одинаковое имя , но в MySQLi:

 $qualified_names = array(); for ($i = 0; $i < mysqli_num_fields($result); ++$i) { $fieldinfo=mysqli_fetch_field_direct($result,$i); $table = $fieldinfo->table; $field = $fieldinfo->name; $qualified_names["$table.$field"]="$table.$field"; } $newrow = array_combine($qualified_names, mysqli_fetch_array($result,MYSQLI_NUM));