2

PHP で odbc を介して MSSQL データベースからフィールド名を返そうとすると問題が発生します。私のクエリは次のとおりです。

SELECT t.ID, t.end_user, ts.name 'status', tp.name 'priority' FROM tickets t INNER JOIN status ts ON ts.ID = t.status INNER JOIN priorities tp ON tp.ID = t.priority

問題は、これを MSSQL サーバーで実行すると、列名 (ID、end_user、status、priority) が期待どおりに表示されるのですが、自分のページで実行すると、status 列とpriority 列の両方に「name」が表示されることです。 .

列の名前変更が表示されない理由や理由はありますか? クエリで「AS」を使用してみましたが、うまくいきませんでした。

ボックスは、FreeTDS odbc ドライバー バージョン 7.2 を実行している ubuntu です。

4

1 に答える 1

3

J_D と電話で話したところ (完全なインターネット ストーカー!)、彼は追加することを提案しました。

+''
列名に。それはこのバグを回避するようです。上記のコードは次のように変更する必要があります

SELECT t.ID, t.end_user, ts.name+'' 'status', tp.name+'' 'priority' FROM tickets t INNER JOIN status ts ON ts.ID = t.status INNER JOIN priorities tp ON tp.ID = t.priority

これはちょっとしたハックですが、うまくいきます。どうやらこれは、PHP が ODBC の結果を解読しようとしたときの何らかのバグの結果です。

SQL コードの変更を伴わない提案があれば、個人的には大いに感謝します。SQL コードのページとページを変更する必要がなくなります。

他のニュースでは、J_D、ランダムな見知らぬ人に電話でそのような紳士になってくれてありがとう.

于 2012-10-18T17:56:20.123 に答える