【问题标题】:Left join is not working on codeigniter左连接不适用于 codeigniter
【发布时间】:2016-09-20 12:11:39
【问题描述】:

我是代码igniter 的新手。我正在尝试使用连接多个表来执行delete 查询,但查询时出错。

这是我的查询代码。

$this->db->from('order');   
$this->db->join('item_order', 'item_order.order_id = order.order_id','left');
$this->db->join('product', 'product.product_number = item_order.item_number','left');
$this->db->join('product_to_image', 'product_to_image.p_id = product.products_id','left');
$this->db->join('product_to_dropbox', 'product_to_dropbox.products_id = product.products_id','left');

$this->db->where('order.user_name', $ebay_user_name);
$this->db->where('order.user_id', $user_id);

$this->db->delete('order');

【问题讨论】:

  • 'orderd' 是故意的还是只是拼写错误?
  • 您遇到的错误是什么?是否与非唯一标识符有关?
  • 我只删除了订单表。
  • 请说明您要从哪些表中删除。

标签: mysql sql codeigniter


【解决方案1】:

使用 Codeigniter 时,您不能使用 Join 执行 DELETEsee herehere

您需要编写一个自然的 SQL。见链接1:

$sql = "DELETE o FROM order as o
  LEFT JOIN item_order ON item_order.order_id = order.order_id
  LEFT JOIN product ON product.product_number = item_order.item_number
  LEFT JOIN product_to_image ON product_to_image.p_id = product.products_id
  LEFT JOIN product_to_dropbox ON product_to_dropbox.products_id = product.products_id

  WHERE order.user_name = ? and order.user_id = ?";
$this->db->query($sql, array($ebay_user_name, $user_id));

或者尝试使用反引号`。但我不确定是否要逃避它们:

$sql = "DELETE o FROM `order` as o
  LEFT JOIN `item_order` ON item_order.order_id = order.order_id
  LEFT JOIN `product` ON product.product_number = item_order.item_number
  LEFT JOIN `product_to_image` ON product_to_image.p_id = product.products_id
  LEFT JOIN `product_to_dropbox` ON product_to_dropbox.products_id = product.products_id
WHERE order.user_name = ? and order.user_id = ?";
$this->db->query($sql, array($ebay_user_name, $user_id));

【讨论】:

  • 我在查询上方收到此错误-> A Database Error Occurred 错误编号:1064 您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,以在第 1 行的“order FROM order LEFT JOIN item_order ON item_order.order_id = order.ord”附近使用正确的语法行号:695
  • 根据dev.mysql.com/doc/refman/5.7/en/delete.html Delete 语法是正确的。但也许它想要一个别名......你使用的是哪个 MySQl 版本?
猜你喜欢
  • 2015-05-28
  • 1970-01-01
  • 2020-10-12
  • 2020-08-05
  • 2015-01-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多