如何将多个查询结果传递给新查询

时间:2010-12-09 08:46:11

标签: php mysql codeigniter

我成功查询了一个表,以获取查询另一个表所需的信息(如果你能看到更好的方式,我将不胜感激!)

我的问题是:如何从第一个查询中返回多个值,并让我的第二个查询返回多个结果。 正如您所看到的,我将查询一的返回结果插入到查询二“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);
} 

谢谢任何帮助我的人,我非常感谢!

2 个答案:

答案 0 :(得分:0)

对不是你只从第一个查询获得第一行 if ($w->num_rows() > 0) { $rowe = $w->row_array();

       $datas = $rowe['msgto_message'];
}

$datas = $rowe['msgto_message']; } 要获取所有记录,您需要遍历结果


if ($w->num_rows() > 0) {
foreach($rowe = $w->row_array() as $datas) {

  $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;
  }

}

}

答案 1 :(得分:0)

您可以在此处找到有用的数据库加入。虽然我不完全确定你在这里要做什么(特别是在那个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的{​​{1}}将msgtomsgto_message表连接在一起,并且可以在msg_id上使用WHERE critera从msgto返回结果。