2010-08-11 4 views
2

Я пытаюсь извлечь некоторые данные из базы данных SQL Sever через PHP с помощью Microsoft Drivers for PHP for SQL Server. Некоторые таблицы можно получить штраф, но другие дают следующее сообщение об ошибке:Ошибка 42S02 из Microsoft Drivers for PHP для SQL Server

Array ([0] => Array ([0] => 42S02 [SQLSTATE] => 42S02 [1] => 208 [код] => 208 [2] => [Microsoft] [Собственный клиент SQL Server 10.0] [SQL Server] Недопустимое имя объекта «xyz $ Permanent Assignments». [Message] => [Microsoft] [Собственный клиент SQL Server 10.0] [SQL Server ] Неверное имя объекта «хуг $ Постоянные Назначения».))

Если я пытаюсь запустить тот же оператор из ISQL (SELECT * FROM [xyz$Permanent Assignments]), используя те же учетные данные, что работает отлично, так что я знаю, что утверждение верно и объект существует.

Я также пробовал с версиями 1 и 2 драйверов MS.

Код ниже, но если я попробую другие таблицы, это сработает - все это бит и промах.

 
$tsql = "SELECT * 
     FROM [".$client."\$Permanent Assignments]"; 

print $tsql; 

$stmt = sqlsrv_query($conn, $tsql); 
if ($stmt) 
{ 
    echo "Statement executed."; 
} 
else 
{ 
    echo "Error in statement execution.
\n"; die(print_r(sqlsrv_errors(), true)); }

У кого-нибудь есть идеи?

Благодаря

+0

таблиц, fail all имеют '' 'в них, правильно? –

+0

Hi Нет, все таблицы имеют в них $. Формат [название компании $ table name], поэтому [xyz $ table a] будет работать и [xyz $ table b] не будет. Невозможно увидеть шаблон. Таблицы - все из Navision. – williamsdb

+0

@william - это вообще возможно показать некоторые рабочие и недействительные примеры королей? –

ответ

0

Try со ссылкой на имя таблицы с "вместо квадратных скобок, если вы используете одинарные кавычки, чтобы разграничить строку, то вам не придется сократить их или сократить вне $

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