我在yii中写了一个sql代码,并给出了这个错误:
CDbCommand无法执行SQL语句:SQLSTATE [42000]:语法错误或访问冲突:1064 SQL语法中有错误;检查与MySQL服务器版本对应的手册,以便在第1行的')'附近使用正确的语法。执行的SQL语句是:SELECT * FROM users其中id in()
我不知道为什么会发生这种情况......... 代码是:
$t = implode(",", $array12);
echo $t;
$sql2 = 'SELECT * FROM users where id in ('. $t. ')';
// echo $sql2; die;
$command = $connection->createCommand($sql2);
$row5 = $command->queryAll();
echo "<pre>";
print_r($row5);
echo "</pre>";
当我使用echo $ sql2和die()回显sql以查看sql时,它给了我: SELECT * FROM其中id为(44,45)
的用户现在,我在as
中直接使用了上面的sql$sql2 = 'SELECT * FROM users where id in (44,45)';
$command = $connection->createCommand($sql2);
$row5 = $command->queryAll();
它的工作完美,我不知道如何处理我的SQL。
答案 0 :(得分:1)
$ array12为空时出错:
SELECT * FROM其中id为()的用户(在错误消息的末尾检查整个sql)
你必须检查$ array12中的元素:
if (count($array12)) {
$t = implode(",", $array12);
$sql2 = 'SELECT * FROM users where id in ('. $t. ')';
// echo $sql2; die;
$command = $connection->createCommand($sql2);
$row5 = $command->queryAll();
} else {
$row5 = array();
}