У меня есть этот запрос будетYii1 эквивалент запроса Sql
SELECT * FROM form_fields
WHERE id NOT IN ("3", "1", "6")
ORDER BY FIELD (id, "3" ,"1" ,"6")
, который я хочу, чтобы преобразовать в запрос yii1. Так что я попытался как этот
$SQL="SELECT * FROM form_fields WHERE id NOT IN {$sorted_array} ORDER BY FIELD (id, $sorted_array)";
$connection=Yii::app()->db;
$command=$connection->createCommand($SQL);
$rowCount=$command->execute();
$dataReader=$command->query();
где $ sorted_array имеет значение Array ([0] => 3 [1] => 1 [2] => 6)
Он дал мне ошибку
PHP уведомление
Массив для преобразования строки
затем я преобразовал $ sorted_array в строку как это
$string = implode(' ', $sorted_array);
и снова выполняется запрос
$SQL="SELECT * FROM form_fields WHERE id NOT IN {$string} ORDER BY FIELD (id, $string)";
$connection=Yii::app()->db;
$command=$connection->createCommand($SQL);
$rowCount=$command->execute();
$dataReader=$command->query();
Теперь я получаю другую ошибку
CDbException
CDbCommand не удалось выполнить SQL заявление: SQLSTATE [42000]: Ошибка синтаксиса или нарушение прав доступа: 1064 У вас есть ошибка в вашем SQL ; проверьте руководство, соответствующее версии вашего сервера MySQL , для правильного синтаксиса для использования рядом с «3 1 6 ORDER BY FIELD (id, 3 1 6)» на странице строка 1. Выполненный оператор SQL: SELECT * FROM form_fields WHERE идентификатор НЕ в 3 1 6 ORDER BY FIELD (ID, 3 1 6)
Вместо этого
SELECT * FROM form_fields
WHERE id NOT IN ("3", "1", "6")
ORDER BY FIELD (id, "3" ,"1" ,"6")
мой запрос yii1
произвел этот ошибочный запрос SQL
SELECT * FROM form_fields
WHERE id NOT IN 3 1 6 ORDER BY FIELD (id, 3 1 6)
Любая помощь будет оценена
См: HTTP://stackoverflow.com/questions/20875758/how-to-put-sql-query-in-an-array-in-yii –