-3

私はyiiでSQLコードを書きましたが、このエラーが発生しました:

CDbCommand は SQL ステートメントの実行に失敗しました: SQLSTATE[42000]: 構文エラーまたはアクセス違反: 1064 SQL 構文にエラーがあります。1 行目の ')' 付近で使用する正しい構文については、MySQL サーバーのバージョンに対応するマニュアルを確認してください。実行された SQL ステートメントは次のとおりです。 SELECT * FROM users where 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 をエコーすると、次のようになります。 SELECT * FROM users where id in (44,45)

さて、上記のSQLをasで直接使用しました

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

そしてその仕事は完璧です、私は自分のSQLをどうするかわかりません。

4

1 に答える 1

1

$ array12が空の場合、エラーが発生しました。

SELECT * FROM users where id in()(エラーのメッセージの最後にある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();
}
于 2012-12-12T05:48:53.027 に答える