Сбой PHP odbc_fetch_array, когда запрос имеет соединение с SQL-сервером с тем же именем поля

0

Я обнаружил проблему при работе с функциями php ODBC. odbc_fetch_array и odbc_fetch_object выходят из строя, когда запрос имеет соединение с таблицей с одинаковым именем столбца, даже если это поле исключено из выбора поля:

например

$con = odbc_connect("Driver={SQL Server Native Client 11.0};Server=$serverName;Database=$db;", 'user', 'pass',SQL_CUR_USE_ODBC);

$query="SELECT table1.field1, table1.field2 from table1 JOIN table2 ON  table1.field1=table2.field1";

$result = odbc_exec($con,$query);

 $a=odbc_fetch_array($result); 

код выше генерирует предупреждение:

Предупреждение: odbc_fetch_array() [function.odbc-fetch-array]: ошибка SQL: [Microsoft] [Собственный клиент SQL Server 10.0] [SQL Server] имя столбца "неоднозначно". Состояние SQL 37000 в SQLGetData

Ошибка была бы в порядке, если бы я выбрал поле1, не указав из какой таблицы, но даже если он явно не работает. единственным "обходным решением", который я нашел до сих пор, является удаление поля из выбранных полей или изменение имени поля из второй таблицы

Я попытался: и SQL Server Native Client 10.0, и SQL Server Native Client 11.0 SQL Server 2008 Php 5.3.2 через Windows

PD: Если у кого-то есть какие-либо айды без использования расширения sqlsrv или mssqL, это будет здорово

Теги:
sql-server
odbc

2 ответа

1
Лучший ответ

Наконец, я узнал, что проблема возникла из-за столбца с "текстовым" типом в базе данных SQL-сервера, odbc_fetch_array терпит неудачу, когда запрос имеет одно или несколько соединений к таблицам с одинаковым именем столбца, а в выбранных полях вы вводите тип текста колонка.

0

Является ли это опечаткой при написании сообщения, это выглядит странно table1.field1=table2=field1. Это должно быть table1.field1 = table2.field1

SELECT table1.field1, table1.field2 from table1 JOIN table2 
ON  table1.field1=table2=field1
                         <--Here
  • 0
    Вы правы, у меня была ошибка опечатки в запросе, но на реальных нет ошибки опечатки, но все еще есть проблема. происходит сбой, когда у меня одинаковые имена столбцов в соединенных таблицах

Ещё вопросы

Сообщество Overcoder
Наверх
Меню