PHP & SQL Server - имена полей усекаются - PullRequest
1 голос
/ 22 мая 2009

Я обнаружил, что в результатах, поступающих с моего SQL Server, имена полей усечены:

$query = "SELECT some_really_really_long_field_name FROM ..."
...
print_r($row);

array(
    'some_really_really_long_field_n' => 'value'
)

Кто-нибудь знает, как избежать этого поведения?

Я думаю, что драйвер базы данных ADODB.

Так что вам не нужно считать: имена полей усекаются до 31 символа.

SQL Server, похоже, не заботится о длинных именах полей, поэтому я могу только предположить, что где-то в драйвере ADODB есть строковый буфер char [32], который не может содержать длинные имена.

Ответы [ 3 ]

5 голосов
/ 22 мая 2009

Вы, вероятно, используете устаревший клиент MSSQL, выпущенный десятилетиями. Используйте новый драйвер MSSQL для PHP от Microsoft или установите клиентские инструменты MSSQL с компакт-диска вашего сервера MSSQL.

2 голосов
/ 22 мая 2009

вы можете использовать псевдоним для длинных имен полей, например:

$query = "SELECT some_really_really_long_field_name AS short_alias FROM ..."

это будет работать для вашей текущей проблемы. Но я предлагаю использовать PDO MSSQL драйвер для подключения к базе данных.

1 голос
/ 22 мая 2009

Самый простой способ избежать усеченных имен полей - использовать более короткие имена полей ....

Извините, это звучит как дурацкий ответ, но он намного чище, его легче читать и поддерживать, и просто лучше практиковать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...