2012-05-15 3 views
1

У меня есть сервер unix, в котором установлен PHP 5.2.13, и он имеет доступ к двум SQL-серверам (один из них работает MSSQL SERVER 2000 и другой MSSQL 2005).PHP + UnixODBC + FreeTDS - SELECT [поле] AS [имя] не работает

Он использует FreeTDS - подробности:

  • Версия: v0.82 FreeTDS
  • каталог
  • freetds.conf:/USR/и т.д. Совместимость
  • MS дб Пб источник/локальный: нет
  • Sybase бинарная совместимость: нет безопасности
  • темы: да библиотека
  • Iconv: да
  • TDS версия: 8.0
  • iODBC: нет
  • UnixODBC: да

И я использую UnixODBC-2.3.1

Сервер MSSQL 2000 прекрасно, я могу запустить все SQL-операторы и используйте mssql_num_rows и mssql_fetch_assoc так же, как и с MySQL.

Однако сервер MSSQL 2005 не будет работать с mssql_num_rows или mssql_fetch_assoc - вы должны использовать odbc_fetch_row.

Это не проблема, я полагаю, это связано только с различными установками сервера.

Однако у меня есть огромная проблема с сервером MSSQL 2005: я не могу выбрать поле AS другое имя!

Например:

SELECT 
    [EnquiryID] AS "The_Key" 
    FROM [db].[dbo].[table] 

отлично работает в моем администратора приложения (например: НЕ PHP), но если я бегу то же самое в моем PHP среде, я получаю:

stdClass Object 
(
    [PK_EnquiryID] => 1 
) 

Вы можете см. его должно быть [The_Key] => 1

Кто-нибудь знает, как мы можем обойти это, пожалуйста? Я вырываю волосы!

Приветствия

Нил

ответ

1

Я думаю, что это был дан ответ на список FreeTDS, но проблема в это PHP, он делает неправильный вызов ODBC так получает имя базовой таблицы вместо звукозаписывающей компанией, которая что вам нужно в этом случае.

0

Это отнюдь не идеальное решение, и я хотел бы изучить правильный способ решения этой проблемы, но в то же время добавьте

+''
в каждый столбец после имени базового столбца, но перед AS и вы должны уклониться от этой проблемы.

 Смежные вопросы

  • Нет связанных вопросов^_^