CMR*_*CMR 5 php sql sql-server odbc
基本上,我需要使用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);
}
Run Code Online (Sandbox Code Playgroud)
它将结果打印为:
'评估名称'=>字符串'Mathematics E3 Diagnostic'(长度= 25)
因此,正如您所看到的,它完全忽略了我给它提供的别名,并且仍将其称为[assessment name]。
但是,如果我在SQL Server Management Studio Express中运行完全相同的操作,则可以正常工作并使用别名。
我尝试了各种不同的组合,例如引用别名,引用列,不同的括号等,但是到目前为止还算不上什么。
这不是一个大问题,因为我可以更改脚本在结果数组中查找别名(而不是别名)时使用的脚本,但是我无法弄清为什么会发生,这有点令人讨厌。 ..
干杯! :)
编辑:
实际上我不认为方括号会有所作为,只是尝试为任何列添加别名都无法通过php odbc使用,但是我仍然可以像CAST(what)AS'alias'这样工作,并且效果很好...只是不选择列作为别名...?:/
这绝不是一个完美的解决方案,我很想学习处理这个问题的正确方法,但同时,添加
+''
Run Code Online (Sandbox Code Playgroud)到每列,在基础列名称之后,但在 AS 别名之前,您应该能够避免此问题。