如何在CodeIgniter中执行我的SQL查询

Þaw*_*Þaw 20 php sql join codeigniter multiple-databases

我的查询有问题,我需要从不同的数据库加入两个表,现在我的问题是如何执行我的查询.我从这里得到了我的语法格式

请先访问此链接,以便了解我的SQL语法为何如此
http://www.x-developer.com/php-scripts/sql-connecting-multiple-databases-in-a-single-query


我正在使用CodeIgniter,这里是我的查询的概念:
注意我选择我的列的方式:DATABASE_NAME.TABLE_NAME.COLUMN_NAME

$ENROLLEES = $this->load->database('ENROLLEES', TRUE);
$ACCOUNTS  = $this->load->database('ACCOUNTS', TRUE);

$SELECT    = "SELECT $ACCOUNTS.BALANCES_TABLE.IDNO, $ACCOUNTS.BALANCES_TABLE.balance";
$FROM      = "FROM $ACCOUNTS.BALANCES_TABLE";
$WHERE     = "$ACCOUNTS.BALANCES_TABLE.IDNO IN (SELECT $ENROLLEES.ENROLLEES_TABLE.IDNO FROM $ENROLLEES.ENROLLEES_TABLE)";

$SQL       = $SELECT ." ". $FROM ." ". $WHERE;
Run Code Online (Sandbox Code Playgroud)

主要问题:如何执行我的查询?
如果我们在codeIgniter中这样做:

$ENROLLEES->query($SQL); or $ACCOUNTS->query($SQL);
Run Code Online (Sandbox Code Playgroud)

如何执行我有多个数据库的查询?我将在这里提供
[database]->query($SQL);什么?

小智 39

$query = $this->db->query($SQL);

return $query->result_array();
Run Code Online (Sandbox Code Playgroud)

  • 出于以下几个原因,应该不惜一切代价避免这种情况:1) 它绕过了 Active Record Pattern (=ARP),Code-Igniter 提供了这些是“本机”查询。2)你必须自己照顾逃跑(当你使用ARP时,CI会为你做)。如果不这样做,**SQL 注入** 很有可能发生。3)查询结果的缓存可能不会影响它们,导致SQL语句较多,性能较低。换句话说:将您的 SQL 查询重写为 ARP,这是 CI 2/3 的常用方法。 (2认同)

Rob*_*lin 12

如果数据库共享服务器,则具有对两个数据库都具有权限的登录,并且只需运行类似于以下内容的查询:

$query = $this->db->query("
SELECT t1.*, t2.id
FROM `database1`.`table1` AS t1, `database2`.`table2` AS t2
");
Run Code Online (Sandbox Code Playgroud)

否则我认为您可能必须单独运行2个查询并在之后修复逻辑.