2012-12-11 118 views
-3

我在警予写了SQL代码及其给这个错误:SQL错误[42000]:语法错误或访问冲突:1064

CDbCommand未能执行SQL语句:SQLSTATE [42000 ]:语法错误或访问冲突:1064您的SQL语法错误;检查与您的MySQL服务器版本相对应的手册,以便在第1行附近使用正确的语法。执行的SQL语句是:SELECT * FROM users其中id为()

我不知道为什么这是发生......... 的代码是:

$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和模具()来查看SQL呼应SQL,它给了我这样的: SELECT * FROM用户where id in(44,45)

现在,我用上面的sql直接在

$sql2 = 'SELECT * FROM users where id in (44,45)'; 
$command = $connection->createCommand($sql2); 
$row5 = $command->queryAll(); 

和它的工作完美,我不知道如何处理我的SQL。

SELECT * FROM用户凡在(ID)

你必须检查数中的元素(在一个错误的消息结束检查整个SQL):

+1

我试图准确地运行你的代码,但我没有得到任何错误,它工作正常。你确定你在做这里写的东西吗? – Arfeen

回答

1

当$ array12是空的你有错误$ 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(); 
} 
相关问题