我们如何在代码点火器中删除表名周围的圆括号



我正在研究代码点火器项目,我需要将整个数据库mysql迁移到sql服务器,因为我在选择查询中遇到了问题,我可以看到在sql服务器圆括号周围不支持表名,这是我的代码点火器查询

$this->db->_protect_identifiers=false;
$this->db->select('*')->from('tb_card',false);
$this->db->where('company_id',$this->company_id,FALSE)->get()->row_array();

此选择查询生成以下查询

SELECT * FROM (tb_card) WHERE company_id = 27

您可以看到表名周围有圆括号,我想删除它,任何人都可以帮我解决这个问题吗?

终于得到了解决方案(/system/database/drivers/odbc/odbc_driver.php在这个路径中需要像这样改变功能

function _from_tables($tables)
    {
        /*if ( ! is_array($tables))
        {
            $tables = array($tables);
        }
        return '('.implode(', ', $tables).')';*/
                if ( ! is_array($tables))
                {
                    return strstr($tables, ',') ? '('.$tables.')' : $tables;
                }
                else
                {
                    return count($tables) > 1 ? '('.implode(', ', $tables).')' : end($tables);
                }
    }

您可以使用简单的$this->db->query($sql)方法而不是活动记录吗?

$result = $this->db->query('SELECT * FROM tb_card WHERE company_id = 27');
printr($this->db->last_query());
printr($result->result());
如果你想

选择*(全部(,你可以使用$this->db->get();例如,是像...

function getcompany($company_id)
       {
         $this->db->where('company_id',$company_id);
         $query = $this->db->get('tb_card');
         return $query->result();
       }

这些函数将像这样返回

SELECT * FROM 'tb_card' WHERE 'company_id' = $company_id

希望它能回答你的问题。

请在表名中使用此弧秒符号tb_card

$this->db->_protect_identifiers=false; $this->db->select('*')->from('`tb_card`',false); $this->db->where('company_id',$this->company_id,FALSE)->get()->row_array();

最新更新