PHP ODBC n'accepte pas d'alias sur le nom de la colonne avec espace

Fondamentalement, j'ai besoin d'get des données sur un SQL Server 2005, en utilisant PHP.

Auparavant, nous mssql_* fonctions mssql_* , mais en raison de problèmes de server, nous ne pouvons utiliser odbc_* fonctions odbc_* .

La table a plusieurs colonnes dont les noms contiennent des espaces, et avant qu'il ne soit suggéré … non je ne peux pas les changer car c'est un morceau de logiciel totalement séparé dans une autre langue et ça le casserait, je ne fais que sortir des statistics de cela.

Anywho, j'avais précédemment accédé à ces colonnes en mettant leurs noms entre crochets, par exemple [nom de colonne] et cela a bien fonctionné sous les fonctions de mssql_* , cependant quand je fais ceci:

 $sql = "select top 1 [assessment name] as AssessmentName from bksb_Assessments"; $result = odbc_exec($db, $sql); while($row = odbc_fetch_array($result)) { var_dump($row); } 

Il imprime les résultats en tant que:

'assessment name' => string 'Mathematics E3 Diagnostic' (longueur = 25)

Comme vous pouvez le voir, il ignore totalement l'alias que je lui ai donné et l'appelle toujours [nom de l'évaluation].

Mais si je cours exactement la même chose dans SQL Server Management Studio Express, cela fonctionne correctement et utilise l'alias.

J'ai essayé différentes combinaisons, telles que citer l'alias, citer la colonne, différents crochets, etc … mais pas de chance jusqu'à présent.

Ce n'est pas un gros problème, car je peux changer ce que mon script utilise pour chercher "nom d'évaluation" dans le tableau des résultats au lieu de l'alias, mais c'est juste un peu ennuyeux que je ne pouvais pas comprendre pourquoi cela se produisait. ..

À votre santé! 🙂

MODIFIER:

En fait, je ne pense pas que les crochets font une différence, juste essayer d'alias une colonne ne fonctionne pas avec php odbc, mais je peux toujours faire quelque chose comme CAST (quel que soit) AS 'alias' et cela fonctionne bien … simplement ne pas sélectionner une colonne comme alias …? : /

Ce n'est en aucun cas une solution parfaite, et j'aimerais apprendre la bonne façon de traiter ce problème, mais en attendant, append

 +'' 

à chaque colonne, après le nom de la colonne sous-jacente, mais avant l'alias AS et vous devriez être en mesure de contourner ce problème.