我已经成功地查询了一个表以获取查询另一个表所需的信息(如果您能看到更好的方法,我将不胜感激!)
我的问题是:如何让第一个查询返回多个值并让第二个查询返回多个结果。 如您所见,我将查询一的返回结果插入查询二“msg_id =?”(我使用“$datas”来填充“?”)但是如果我的查询一的结果有多个值,那么这将如何工作?
还有我怎样才能让它从一个查询中得到多个结果?目前,如果 mysql 中有多个值,它只会获取它读取的第一个值。
我的MODEL代码如下:
function check() {
$this->db->select('msgto_message');
$this->db->from('msgto');
$this->db->where('msgto_display', 'y');
$this->db->where('msgto_recipient', '1');
$w = $this->db->get();
if ($w->num_rows() > 0) {
$rowe = $w->row_array();
$datas = $rowe['msgto_message'];
}
$sql = "SELECT msg_content FROM msg WHERE msg_id = ?";
$data = $this->db->query($sql, $datas) or die(mysql_error());
if ($data->num_rows() > 0) {
foreach($data->result_array() as $row) {
$data = $row;
}
return $data;
}
}
我的CONTROLLER代码如下:
function index() {
$this->load->model('data_model');
$data['rows'] = $this->data_model->check();
$this->load->view('home', $data);
}
感谢任何帮助过我的人,我非常感激!
最佳答案
您可能会发现数据库连接在这里很有用。虽然我不完全确定您要在这里做什么(尤其是在那个 foreach 循环中!),但像这样的事情可能会让您朝着更有效的方向前进:
function check() {
$this->db->select('msg.msg_content');
$this->db->from('msgto');
$this->db->join('msg', 'msgto.msgto_message = msg.msg_id');
$this->db->where('msgto.msgto_display', 'y');
$this->db->where('msgto.msgto_recipient', '1');
$data = $this->db->get();
if ($data->num_rows() > 0) {
return $data->result_array();
}
}
这要求数据库根据匹配 msg_id
的 msgto_message
将 msg
和 msgto
表连接在一起,并且可以在 msgto
上使用 WHERE 条件,同时从 msg
返回结果。
关于php - 如何将多个查询结果传递给新查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4396327/