我正在研究代码点火器项目,我需要将整个数据库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();