php 如何在 CodeIgniter 中执行我的 SQL 查询
声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow
原文地址: http://stackoverflow.com/questions/16435390/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me):
StackOverFlow
How to execute my SQL query in CodeIgniter
提问by Taw
I have a problem with my query and I need to join two tables from different databasesnow my problem is how can I execute my query. I got my syntax format from here
我的查询有问题,我需要连接来自不同数据库的两个表,现在我的问题是如何执行我的查询。我从这里得到了我的语法格式
Please visit first this link so you could understand why my SQL syntax is like this
http://www.x-developer.com/php-scripts/sql-connecting-multiple-databases-in-a-single-query
请首先访问此链接,以便您了解为什么我的 SQL 语法是这样的
http://www.x-developer.com/php-scripts/sql-connecting-multiple-databases-in-a-single-query
我正在使用 CodeIgniter,这里是我的查询的想法:
Notice the way I'm selecting my columns: DATABASE_NAME.TABLE_NAME.COLUMN_NAME请注意我选择列的方式: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;
MAIN PROBLEM: How to Execute my query?
If we do like this in codeIgniter:
主要问题:如何执行我的查询?
如果我们在 codeIgniter 中这样做:
$ENROLLEES->query($SQL); or $ACCOUNTS->query($SQL);
How can I execute my query that Im having multiple databases? What will I provide here[database]->query($SQL);
?
如何执行我有多个数据库的查询?我会在这里提供[database]->query($SQL);
什么?
回答by Mohit maru
$query = $this->db->query($SQL);
return $query->result_array();
回答by Robin Castlin
If the databases share server, have a login that has priveleges to both of the databases, and simply have a query run similiar to:
如果数据库共享服务器,请使用对两个数据库都具有特权的登录名,并且只需运行类似于以下内容的查询:
$query = $this->db->query("
SELECT t1.*, t2.id
FROM `database1`.`table1` AS t1, `database2`.`table2` AS t2
");
Otherwise I think you might have to run the 2 queries separately and fix the logic afterwards.
否则,我认为您可能必须分别运行 2 个查询,然后再修复逻辑。
回答by Muhammad Hannan
I can see what @Taw mentioned :
我可以看到@Taw 提到的内容:
$ENROLLEES = $this->load->database('ENROLLEES', TRUE);
$ACCOUNTS = $this->load->database('ACCOUNTS', TRUE);
CodeIgniter supports multiple databases. You need to keep both database reference in separate variable as you did above. So far you are right/correct.
CodeIgniter 支持多个数据库。您需要像上面一样将两个数据库引用保留在单独的变量中。到目前为止你是对的/正确的。
Next you need to use them as below:
接下来,您需要按如下方式使用它们:
$ENROLLEES->query();
$ENROLLEES->result();
and
和
$ACCOUNTS->query();
$ACCOUNTS->result();
Instead of using
而不是使用
$this->db->query();
$this->db->result();
See this for reference: http://ellislab.com/codeigniter/user-guide/database/connecting.html
请参阅此参考:http: //ellislab.com/codeigniter/user-guide/database/connecting.html
回答by Gurpreet Singh
http://www.bsourcecode.com/codeigniter/codeigniter-select-query/
http://www.bsourcecode.com/codeigniter/codeigniter-select-query/
$query = $this->db->query("select * from tbl_user");
OR
或者
$query = $this->db->select("*");
$this->db->from('table_name');
$query=$this->db->get();
回答by Muhammad Sulman
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')
回答by Muhammad Sulman
$this->db->select('id, name, price, author, category, language, ISBN, publish_date');
$this->db->select('id, name, price, author, category, language, ISBN, publish_date');
$this->db->from('tbl_books');