2016-03-09 2 views
1

, почему я всегда получаю эту ошибку:Ошибка "Массив для преобразования строки в ..", чтобы SQLSRV пунктом

Array to string conversion in .. 

каждый раз, когда я использовать ORDER BY статьи в PHP - SQLSRV. (я ABIT новый для 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

+0

Вы устанавливаете $ queryparams в массив, содержащий одну пустую строку. Я думаю, вы намерены установить его в пустую строку, которая будет: $ queryparams = array(); – Majiy

+0

hi Majiy, .i Думаю, что это не тот случай, так как если я удалю 'order by', запрос работает отлично и показывает результат. – psaka

+0

Вы пытались удалить '$ queryparams'? Я думаю, что ошибка возникает, потому что в 1-м случае вы не устанавливаете, для чего предназначена '$ queryparams'. запрос должен быть похож на «SELECT * FROM tableA WHERE (?) = (?) ORDER BY fieldA ASC» и '$ queryparams' может быть похожим массивом ('name', 'unknown') –

ответ

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 сообщения.

+0

hi ImClarky, на самом деле я помещаю что $ queryparams только в случае, когда я хочу использовать параметр внутри sql в будущем. но на данный момент я не буду использовать какой-либо параметр в sql, поэтому я оставлю массив пустым. попытался также удалить скобку, но при этом ошибка в том же «преобразовании массива в строку» – psaka

+0

@psaka, как вы извлекаете данные? – ImClarky

+0

Кроме того, наличие пустого массива параметров отлично - до тех пор, пока запрос не ожидает какого-либо, конечно ... Я никогда не говорил, что это проблема. Это просто скобки '()' в вашей строке '$ query', это проблема. А затем также, как вы извлекаете данные. – ImClarky

0

спасибо за ответы, я просто хочу поделиться вывод о моих собственных проблем:/

это, кажется, что если мы помещаем ORDER BY в качестве вспомогательного запроса, запрос работает отлично. что-то вроде этого:

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

я не знаю, кастрированный баран это правильный ответ или нет, но это сложно, решение помогает мне. Я по-прежнему открыт для получения дополнительной информации/ответа:

Смежные вопросы