PHP ODBC 不接受带空格的列名的别名

标签 php sql sql-server odbc

基本上,我需要使用 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);
}

打印结果如下:

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

如您所见,它完全忽略了我给它的别名,仍然称它为[评估名称]。

但如果我在 SQL Server Management Studio Express 中运行完全相同的东西,它工作正常并使用别名。

我已经尝试了各种不同的组合,例如引用别名、引用列、不同的括号等......但到目前为止还没有成功。

这不是一个大问题,因为我可以更改我的脚本用于在结果数组中查找“评估名称”而不是别名的内容,但是我无法解决这个问题有点烦人为什么这是发生...

干杯! :)

编辑:

实际上我不认为方括号有什么不同,只是试图通过 php odbc 对任何列进行别名是行不通的,但是我仍然可以做一些像 CAST(whatever) AS 'alias' 这样的事情,而且效果很好...只是不选择列作为别名...? :/

最佳答案

这绝不是一个完美的解决方案,我很想学习处理这个问题的正确方法,但与此同时,添加

+''
到每一列,在基础列名之后,但在 AS 别名之前,您应该能够避免这个问题。

关于PHP ODBC 不接受带空格的列名的别名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12200072/

相关文章:

php - SQL:我似乎无法弄清楚的左连接问题

javascript - 阻止来 self 的网站的 cURL 请求

mysql - 有没有办法创建一个选择表中最大行的 View ?

MySQL select count(*) 语句不包括最小值

sql - Transact-SQL 速记连接语法?

sql-server - 有没有办法重置表变量的标识?

sql-server - 标准化平均值的 T-SQL

php - 检查用户名/电子邮件是否可用方法

sql - 按以下方式创建 SQL Server 存储过程有哪些缺点?

javascript - 返回 javascript 结果以在 php 中使用