Codeigniter:在连接调用中为表名使用已定义的常量

时间:2014-07-07 20:47:23

标签: mysql escaping codeigniter-2

我的每个数据库表都有一个已定义的常量。

define('QTABLE','questions');
define('ATABLE','answers');

我想使用通常引用的列“xid”来加入这些表。

如果我引用了表的实际名称,我就会这样做。

$this->db->from('questions');
$this->db->select('qcount,answers.xid,answers.aval');
$this->db->join('answers','questions.xid=answers.xid');
$gquery=$this->db->get();

但我不想直接在代码中引用表名,以防我们稍后需要重命名。如何使用Codeigniter的Active Records正确使用已定义的常量?我怀疑它是关于使用正确的单/双引号进行转义。

我尝试了以下内容,但绝对不起作用!

$this->db->from(Q-TABLE);
$this->db->select('qcount,ATABLE.xid,ATABLE.aval'); <----PROBLEM
$this->db->join(ATABLE,'QTABLE.xid=ATABLE.xid');<------PROBLEM
$gquery=$this->db->get();
你可以告诉我通往光明的道路吗?

mmiz

1 个答案:

答案 0 :(得分:0)

在你的模特中

function __construct()
{
    // Initialization of class
    parent::__construct();
    define('QTABLE','questions'); // define constant here in constructor
    define('ATABLE','answers');  // define constant here in constructor
}

尝试像这样的查询

$this->db->select('qcount,'.ATABLE.'.xid,'.ATABLE.'.aval'); 
$this->db->from(QTABLE);
$this->db->join(ATABLE,QTABLE.'.xid='.ATABLE.'.xid');
$query=$this->db->get();
echo $this->db->last_query(); exit;