错误“数组到字符串的转换”. 在 SQLSRV 按子句排序


Error "Array to string conversion in .." in SQLSRV order by clause

为什么我总是收到此错误:

Array to string conversion in ..

每次我在 PHP 中使用 ORDER BY 子句时 - SQLSRV。(我是SQLSRV的新手,所以如果您认为有必要,请编辑我的问题)

即使是简单的查询,例如

SELECT * FROM tableA ORDER BY fieldA ASC

也会导致该错误。

如果我删除"排序方式",一切正常。下面是我的PHP SQLSRV脚本:

$conn = "some db setting";
$query= "(SELECT * FROM tableA ORDER BY fieldA ASC)";
$queryparams = array("");
$querun = sqlsrv_query($conn,$query, $queryparams);

我使用的版本:

php 5.4.31
SQL Server 2008

编辑以获取更多信息:如果我直接从 SQL STUDIO

从查询字符串中删除括号/括号,使其:

$query= "SELECT * FROM tableA ORDER BY fieldA ASC";

在查询字符串中使用括号/括号会导致 SQL 中出现语法错误。查询返回带有包含错误消息的数组false,如下所示:

Array ( [0] => Array ( [0] => 42000 [SQLSTATE] => 42000 [1] => 156 [code] => 156 [2] => [Microsoft][ODBC Driver 11 for SQL Server][SQL Server]Incorrect syntax near the keyword 'ORDER'. [message] => [Microsoft][ODBC Driver 11 for SQL Server][SQL Server]Incorrect syntax near the keyword 'ORDER'. ) )

我猜你正在尝试回显一个数组,因此Array to String conversion消息。

感谢您的回复,我只想分享我对自己问题的发现:/

似乎如果我们将 ORDER BY 作为子查询,查询工作正常。 像这样:

SELECT *  FROM (
SELECT a,b,c,d,e FROM tableA ORDER BY fieldA ASC
) X

我不知道这是否是一个正确的答案,但这个棘手的解决方案对我有帮助。我仍然愿意了解更多信息/回答你:)