2010-12-09 2 views
1

мне удалось запрашивая одну таблицу, чтобы получить информацию, необходимую для запроса другой таблицы (Если вы можете увидеть лучший способ, которым я был бы благодарен!)Как передать несколько запрошенные результаты нового запроса

Мой вопрос: Как я могу получить несколько значений из первого запроса и вернуть второй запрос с несколькими результатами. Как вы можете видеть, я вставляю возвращаемый результат из запроса один в запрос два «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); 
} 

Спасибо всех, кто помогает мне, я очень ценю это!

ответ

0

Вы можете найти базу данных присоединиться к полезным здесь. (Особенно! В этом Еогеасп цикле) Хотя я не совсем уверен, что вы пытаетесь сделать здесь, что-то подобное может заставить вас идти в более эффективном направлении:

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 и msgto основаны на msgto_message, соответствующие msg_id, и могут использовать критерий WHERE на msgto, возвращая результаты от msg.

0

Право не вы получаете только первую строку из запроса одного if ($w->num_rows() > 0) { $rowe = $w->row_array();

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

}

}

+0

Благодарим за указание этого! Правильно ли я говорю, что «foreach ($ rowe = $ w-> row_array()) {« должно быть »foreach ($ rowe = $ w-> row_array() как $ datas) {"? – Elgoog 2010-12-09 09:30:11

+0

Да, вы правы. Я исправлю его – 2010-12-09 09:39:28