错误号:1064(使用sql JOIN删除)

时间:2011-10-21 12:31:29

标签: php codeigniter join

我希望在两个数据库表(mysql)中使用sql JOIN删除ROW但是得到错误:

这是我的sql代码:

  

table_1.id =>有一行标识3
   table_2.rela =>有三行真实3(有时候行数table_2.rela与table_1.id连接是1或5或2或......)

  //$id = $this->input->post('id');
    $id = '3';
        $this->db->query("
        DELETE *
        FROM table_1
        JOIN  table_2
           ON table_1.id = table_2.rela
        WHERE table_1.id = '.$id.'");

通过上述查询,我​​收到此错误:

  

发生数据库错误
错误编号:1064

     

您的SQL语法有错误;检查手册   对应于您的MySQL服务器版本,以便使用正确的语法   在表格1附近' * FROM table_1 JOIN table_2。'在第1行

     

DELETE * FROM table_1 JOIN table_2 ON table_1.id = table_2.rela WHERE   table_1.id =' .3。'

如何解决?

3 个答案:

答案 0 :(得分:1)

DELETE后无法使用通配符。您必须指定要从中删除记录的表。您的查询应该是:

$this->db->query("
        DELETE table_1, table_2
        FROM table_1
        JOIN  table_2
           ON table_1.id = table_2.rela
        WHERE table_1.id = ".floor($id));

假设id是int。如果$ id可能来自用户输入,这也会删除无效字符。

答案 1 :(得分:0)

您应该在FROM子句之前提及至少一个表名,您要从中删除匹配的行。如果要从两个表中删除匹配的行,请提及以逗号分隔的两个表。

$this->db->query("
        DELETE table_1
        FROM table_1
        JOIN  table_2
           ON table_1.id = table_2.rela
        WHERE table_1.id = '".$id."'");

答案 2 :(得分:0)

$id = '3';
    $this->db->query("
    DELETE table_1, table_2
    FROM table_1
    JOIN  table_2
       ON table_1.id = table_2.rela
    WHERE table_1.id = $id");

同样在你的原始问题中,你使用字符串错误,你的$ id被双引号括起来,你使用单一来尝试连接...因为它用双引号和你的$ id很可能是你不在的数字需要将它包装在sql的单引号中...您需要的只是"table_1.id = $id";