【发布时间】:2012-08-25 08:52:55
【问题描述】:
基本上,我需要使用 PHP 从 SQL Server 2005 中获取一些数据。
以前我们使用mssql_* 函数,但是由于各种服务器问题,我们现在只能使用odbc_* 函数。
该表有各种列,其名称中包含空格,在建议之前....不,我无法更改它们,因为这是另一种语言的完全独立的软件,它会破坏它,我只是从中获取统计信息。
任何人,我以前一直通过将它们的名称放在方括号中来访问这些列,例如[column name] 它在 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(whatever) AS 'alias' 之类的操作,并且效果很好...只是不选择列作为别名...? :/
【问题讨论】:
-
省略
AS关键字并使用[assessment name] AssessmentName有什么区别? -
不,刚刚试过。尝试不带引号和带引号(别名)没有区别。可能是 ODBC 驱动程序的问题吗?这是我在谷歌上搜索的唯一建议,但没有关于如何实际解决它。
-
只是猜测,你试过用反引号代替方括号吗?
-
您好,Microsoft SQL 不接受反引号作为有效语法。
-
我刚试过
select "atext" from table_1,其中atext 是列名,它接受引号,这可能值得一试。
标签: php sql sql-server odbc