我有一个像这样的数组
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);
谁能告诉我哪里出错了?
由于
彼得
答案 0 :(得分:4)
你需要在php中使用implode函数将convert数组导入到字符串中。 还需要在引号中包含电子邮件的字符串值:
$sql = "DELETE FROM emails WHERE customer_id='".$id."' AND
email NOT IN('".implode("','",$emails)."')";
答案 1 :(得分:3)
也许:
$emails = implode("', '", $emails);
$sql = "DELETE FROM emails WHERE customer_id='".$id."' AND email NOT IN('".$emails."')";
$query = $this->db->query($sql);
答案 2 :(得分:0)
你缺少引号:
$emails = implode("', '", $emails);
$sql = "DELETE FROM emails WHERE customer_id='".$id."' AND email NOT IN('".$emails."')";
$query = $this->db->query($sql);
答案 3 :(得分:0)
您的数组包含文字,但这些文字并不是每个都被IN列表的引号包围。
答案 4 :(得分:0)
您更有可能没有在查询中包含带引号的单个电子邮件。 mysql_error应该肯定会选择它吗?
$emails = join('", "', $emails);
$sql = 'DELETE FROM emails WHERE customer_id="'.$id.'" AND email NOT IN("'.$emails.'")';
$query = $this->db->query($sql);
尝试回显$ sql,看看你得到了什么(如果它没有多大意义,可以在这里发帖)。
编辑:在我输入答案的时候,2个人怎么敢和我发布相同的答案! >:|答案 5 :(得分: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);