Php 在codeigniter中从关系数据库获取数据
我有两张桌子;表1和表2。这两个表都使用一个公共groupid相互关联。我可以使用以下代码成功地查询第二个表:Php 在codeigniter中从关系数据库获取数据,php,mysql,codeigniter,Php,Mysql,Codeigniter,我有两张桌子;表1和表2。这两个表都使用一个公共groupid相互关联。我可以使用以下代码成功地查询第二个表: $query = $this->db->query("SELECT * FROM `table2` WHERE `memberid`='$id'"); $data['relation'] = $query->result_array(); 现在,我想使用groupid结果查询第一个表,即table1 我尝试过以下方法,但没有成功: for($ii = 0 ; $
$query = $this->db->query("SELECT * FROM `table2` WHERE `memberid`='$id'");
$data['relation'] = $query->result_array();
现在,我想使用groupid结果查询第一个表,即table1
我尝试过以下方法,但没有成功:
for($ii = 0 ; $ii < count($data['relation']) ; $ii++){
$id = $data['relation'][$ii]['groupid'];
$query1 = $this->db->query("SELECT * FROM `group` WHERE `id`='$id'");
}
$data1['group'] = $query1->result_array();
$fine = array_merge($data, $data1);
print_r(count($fine)); // the count result is 1 ideally should be 2
我知道如何在核心php中实现这一点,但不太确定如何在CI中实现这一点。我是新来的CI,任何帮助都将不胜感激
谢谢,
乌特帕尔
您需要在此for循环之外创建一个数组$data1,并定义$query->result\u数组;一般来说,如果运行嵌套循环,并且内部查询使用来自查询的数据,那么几乎总是应该将查询作为单个联接查询重新编写。当你写这些查询的时候,你可能会感到脆弱。考虑一下,或者使用框架没有什么意义。感谢SjAGR和贾景晖会记住这一点。
for($ii = 0 ; $ii < count($data['relation']) ; $ii++){
$id = $data['relation'][$ii]['groupid'];
$query1 = $this->db->query("SELECT * FROM `group` WHERE `id`='$id'");
$data1['group'] = $query1->result_array();
$fine = array_merge($data, $data1);
print_r(count($fine)); // the count result is 33 ideally should be 2
}
$ok = array();
for($ii = 0 ; $ii < count($data['relation']) ; $ii++){
$id = $data['relation'][$ii]['groupid'];
print_r ($id);
echo "<br>";
$query1 = $this->db->query("SELECT * FROM `group` WHERE `id`='$id'");
$data1['group'][$ii]= $query1->result_array();
}
//print_r($data1['group']);
$fine = array_merge($data, $data1);
print_r($fine);