我有这个 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();
现在我得到另一个错误
CDb异常
CDbCommand 执行 SQL 语句失败: SQLSTATE[42000]: Syntax error or access violation: 1064 您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,以在第 1 行的“3 1 6 ORDER BY FIELD (id, 3 1 6)”附近使用正确的语法。执行的 SQL 语句是:SELECT * FROM form_fields WHERE id NOT IN 3 1 6 按领域排序 (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)
任何帮助,将不胜感激