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

Php 如何在CodeIgniter中执行我的SQL查询,php,sql,codeigniter,join,multiple-databases,Php,Sql,Codeigniter,Join,Multiple Databases,我的查询有问题,我需要连接来自不同数据库的两个表现在我的问题是如何执行查询。我从这里得到了我的语法格式 请先访问此链接,以便您了解为什么我的SQL语法是这样的 我正在使用CodeIgniter,下面是我的查询的一个想法:注意我选择列的方式:数据库\u名称。表\u名称。列\u名称 $ENROLLEES = $this->load->database('ENROLLEES', TRUE); $ACCOUNTS = $this->load->database('ACCOUNT

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

请先访问此链接,以便您了解为什么我的SQL语法是这样的

我正在使用CodeIgniter,下面是我的查询的一个想法:
注意我选择列的方式:数据库\u名称。表\u名称。列\u名称

$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;
主要问题:如何执行我的查询?
如果我们在codeIgniter中这样做:

$ENROLLEES->query($SQL); or $ACCOUNTS->query($SQL);

我如何执行有多个数据库的查询?我将在这里提供什么查询($SQL)

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

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

否则,我认为您可能必须分别运行这两个查询,然后修复逻辑。

我可以看到@Þaw提到的内容:

$ENROLLEES = $this->load->database('ENROLLEES', TRUE);
$ACCOUNTS = $this->load->database('ACCOUNTS', TRUE);
CodeIgniter支持多个数据库。您需要像上面所做的那样,将两个数据库引用保持在单独的变量中。到目前为止你是对的

接下来,您需要按如下方式使用它们:

而不是使用

请参见以下参考: $this->db->select('id,name,price,author,category,language,ISBN,publish_date')


chk this-你真的需要两个数据库吗,使用两个表可能更容易些?sir@SureshKamrushi你不明白我的问题,我知道如何在CI中定义数据库,我正在尝试连接来自两个不同数据库的两个表,我将在CI的语法
你的_数据库->查询(SQL)中提供什么?因为我是从两个databases@Stanyer下面是该公司设计的数据库。我的
config.php
文件中加载了3个数据库。我有这些
$Enrolleyers=$this->load->database('Enrolleyers',TRUE)$ACCOUNTS=$this->load->database('ACCOUNTS',TRUE)
显然最后一个是
默认值
。如果我使用
$this->db->query()
这意味着我使用的是默认数据库。您只需要一个连接,即一个“加载到数据库”。在这种情况下,如果加载的用户可以访问所有给定的数据库。在获取表时,您可以指定
数据库
。先生,您的意思是我不会加载我的另外两个数据库而只使用我的默认值吗?您将有一个数据库作为默认值,并且您连接的用户也将对另外两个数据库拥有
权限,然后,您可以像我在给定的示例中所做的那样,在数据库之间嵌套查询。这应该不惜一切代价避免,因为有几个好的理由:1)它绕过了活动记录模式(=ARP),CodeIgniter提供了这些“本机”查询。2) 您必须自己处理转义(当您使用ARP时,CI会为您处理)。如果不这样做,很可能会发生SQL注入。3) 缓存查询结果可能不会影响它们,从而导致更多的SQL语句和更低的性能。换句话说:将您的SQL查询重写为ARP,这是CI 2/3的常见方式。$this->db->query($SQL);到$this->db->query($sql);在PHP中,变量名和常量名区分大小写
$ENROLLEES->query();
$ENROLLEES->result();
$ACCOUNTS->query();
$ACCOUNTS->result();
$this->db->query();
$this->db->result();
    $sql="Select * from my_table where 1";    
    $query = $this->db->query($SQL);
    return $query->result_array();
 return $this->db->select('(CASE 
            enter code hereWHEN orderdetails.ProductID = 0   THEN dealmaster.deal_name
            WHEN orderdetails.DealID = 0 THEN products.name
            END) as product_name')
       $this->db->from('tbl_books');
$query = $this->db->query("select * from tbl_user");
$query = $this->db->select("*");
            $this->db->from('table_name');
            $query=$this->db->get();