【问题标题】:Inner join in codeigniter在codeigniter中加入
【发布时间】:2017-06-17 09:54:26
【问题描述】:

这是错误...

发生数据库错误

错误号:23000/1052

字段列表中的列“id”不明确

SELECT id FROM tbl_vendor INNER JOIN tbl_item ON id=vendor_id WHERE shop = 'BVC'

文件名:C:/xampp/htdocs/parts/system/database/DB_driver.php

行号:691

$shop= $this->input->post('vendor');
                      $this->db->select('id');
                      $this->db->from('tbl_vendor');
                      $this->db->join('tbl_item', 'vendor_id=id', 'inner');
                      $this->db->where('shop', $shop);
                      $query=$this->db->get();

【问题讨论】:

  • 使用 id 和表别名,即 tbl_vendor.id
  • 我将在 select() 或 join() 中使用它?
  • 两个地方,只要你在两个表中有共同的列名,就使用别名来区分列
  • 如果我这样做。我会再次得到错误。消息:CI_DB_pdo_result 类的对象无法转换为字符串文件名:database/DB_driver.php @s
  • 那是什么错误?

标签: php mysql codeigniter


【解决方案1】:

只需将表名添加为如下所示的模棱两可:

$shop= $this->input->post('vendor');
                      $this->db->select('tbl_vendor.id');
                      $this->db->from('tbl_vendor');
                      $this->db->join('tbl_item', 'tbl_item.id=tbl_vendor.id','inner');
                      $this->db->where('tbl_vendor.shop', $shop);
                      $query=$this->db->get();
                      $data=$query->result_array();

这样查询将是 SELECT tbl_vendor.id FROM tbl_vendor INNER JOIN tbl_item ON tbl_vendor.id=tbl_item.id WHERE tbl_vendor.shop = 'BVC'

更多信息查看here

【讨论】:

  • 这样试试? @阿里哈桑
  • 如果我这样做,我再次收到错误消息:CI_DB_pdo_result 类的对象无法转换为字符串文件名:database/DB_driver.php
  • 这里我不知道列名属于哪个表。你需要在列名之前使用你的表名
  • Select() 中的 ID 来自 tbl_vendor,而在 join() 中,我想对 tbl_vendor 进行内部连接。 id 与 tbl_item.id.
【解决方案2】:

因为你必须列相同的尝试这样的事情

$shop = $this->input->post('vendor');

$query = $this->db->select('i.id, v.id as vender_id')
                  ->from('tbl_vendor v')
                  ->join('tbl_item i', 'i.id = v.id')
                  ->where('v.shop', $shop)
                  ->get();

return $query->row_array();

注意:

  • row_array() 将返回单个项目
  • result_array() 多个项目

https://www.codeigniter.com/user_guide/database/results.html

【讨论】:

  • @AliHassan 不要投票接受答案
  • 需要避免单字母模棱两可。最好是模棱两可的表名。 @wolfgang1983
  • @wolfgang1983 现在我什至无法在数据库中插入数据。它既不显示错误也不在数据库中插入数据。
  • 这不是原始问题的一部分
  • @wolfgang1983 但我也想插入该数据......但现在我不能。
【解决方案3】:

您收到的错误表示字段名称“id”存在于您正在查询的一个或多个表中,您能写下您在每个表中有哪些列吗? 给表一个别名并将其与您的字段一起使用将解决您的问题:例如 tbl_vendor.id

【讨论】:

    猜你喜欢
    • 2023-03-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-26
    • 2018-03-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多