1

私はこのような配列を持っています

array([0]=> 'email@email.com', [1]=> 'email2@email.com', [2]=> 'email3@email.com');

何百通ものメールが載っているテーブルもあります。

配列にあるものを除いて、これらの電子メールをすべて削除できるようにしたいと思います。

このコードを試しましたが、何も起こりません。

    $emails = join(', ', $emails);
    $sql = "DELETE FROM emails WHERE customer_id='".$id."' AND email NOT IN(".$emails.")";
    $query = $this->db->query($sql);

誰かが私がどこで間違っているのか教えてもらえますか?

ありがとう

ピーター

4

6 に答える 6

3

多分:

$emails = implode("', '", $emails);
$sql = "DELETE FROM emails WHERE customer_id='".$id."' AND email NOT IN('".$emails."')";
$query = $this->db->query($sql);
于 2012-09-06T13:35:08.727 に答える
0

これを試してください。

$emails = join(',', $emails);
To avoid comma in last ,
$emails=trim($emails,',');
$sql = "DELETE FROM emails WHERE customer_id='".$id."' AND email NOT IN(".$emails.")";
$res = $this->db->query($sql);
于 2012-09-06T13:44:09.810 に答える
0

引用符がありません:

$emails = implode("', '", $emails);
$sql = "DELETE FROM emails WHERE customer_id='".$id."' AND email NOT IN('".$emails."')";
$query = $this->db->query($sql);
于 2012-09-06T13:35:56.777 に答える
0

配列にはリテラルが含まれていますが、これらは IN リストの引用符で個別に囲まれているわけではありません。

于 2012-09-06T13:35:59.973 に答える