错误"数组到字符串转换..."在SQLSRV order by子句中

时间:2016-03-09 08:29:47

标签: php sql sql-server-2008 sql-order-by sqlsrv

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

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

运行,查询工作正常

2 个答案:

答案 0 :(得分:0)

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

$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消息。

答案 1 :(得分:0)

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

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

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

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