2010-08-11 4 views
2

J'essaie d'extraire des données d'une base de données SQL Server via PHP en utilisant les pilotes Microsoft pour PHP pour SQL Server. Certaines tables je peux récupérer très bien, mais d'autres donnent le message d'erreur suivant:Erreur 42S02 des pilotes Microsoft pour PHP pour SQL Server

Array ([0] => Array ([0] => 42S02 [SQLSTATE] => 42S02 [1] => 208 [code] => 208 [2] => [Microsoft] [SQL Server natif client 10.0] [SQL Server] Nom d'objet non valide 'xyz $ Permanent Assignments'. [Message] => [Microsoft] [SQL Server Native Client 10.0] [SQL Server ] nom d'objet incorrect « xyz $ missions permanentes ».))

Si je tente et exécuter la même déclaration de isql (SELECT * FROM [xyz$Permanent Assignments]) en utilisant les mêmes informations d'identification, il fonctionne très bien donc je sais que la déclaration est correcte et l'objet existe.

J'ai également essayé avec la version 1 et 2 des pilotes MS.

Le code est ci-dessous mais si j'essaie d'autres tables cela fonctionne - tout est un peu aléatoire.

 
$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)); }

Vous avez des idées?

Merci

+0

$ Les tableaux –

+0

Salut Non, toutes les tables ont un $, le format est [nom de la société $ table name], donc [xyz $ table a] fonctionnera et [xyz $ table b] ne peut pas voir un motif Les tables proviennent toutes de Navision – williamsdb

+0

@william est-il possible de montrer du travail et du non-travail? exemples de roi? –

Répondre

0

Essayez de citer le nom de table "au lieu de crochets, si vous utilisez des guillemets simples pour délimiter la chaîne alors vous ne devrez pas les réduire à ou réduire les

Questions connexes