5

基本的に、PHP を使用して SQL Server 2005 からデータを取得する必要があります。

以前はmssql_*関数を使用していましたが、さまざまなサーバーの問題により、関数のみを使用できるようになりましたodbc_*

テーブルには、名前にスペースが含まれるさまざまな列があり、提案される前に....いいえ、これは別の言語の完全に別のソフトウェアであり、それを壊すため、変更できません。統計を取得しているだけですそれの。

とにかく、以前は[列名]などの名前を角括弧で囲んでこれらの列にアクセスしていましたが、mssql_*関数の下では正常に機能しましたが、これを行うと:

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

結果は次のように出力されます。

'評価名' => 文字列 '数学 E3 診断' (長さ = 25)

ご覧のとおり、私が付けたエイリアスを完全に無視し、[評価名] と呼んでいます。

しかし、SQL Server Management Studio Express でまったく同じことを実行すると、正常に動作し、エイリアスが使用されます。

エイリアスの引用、列の引用、さまざまな括弧など、さまざまな組み合わせを試しましたが、今のところうまくいきません。

これは大きな問題ではありません。エイリアスの代わりに結果配列で「評価名」を検索するためにスクリプトが使用するものを変更できるからです。 ..

乾杯!:)

編集:

実際には、角括弧が違いを生むとは思いません.php odbcを介して列にエイリアスを付けようとしても機能しませんが、CAST(何でも) AS 'alias'のようなことを行うことができ、それは正常に機能します...エイリアスとして列を選択していないだけですか...?:/

4

4 に答える 4

4

これは決して完璧な解決策ではなく、この問題に対処する適切な方法を学びたいと思っていますが、それまでの間、追加してください

+''
基になる列名の後、ただし AS エイリアスの前に各列に追加すると、この問題を回避できるはずです。

于 2012-10-18T17:59:53.617 に答える
1

同様の問題に直面しました。私の場合、カーソルタイプSQL_CUR_USE_ODBCを選択すると、 odbc_connectの 4 番目のパラメーターがうまくいきました。

于 2020-06-05T17:54:13.057 に答える