Как передать несколько запрошенных результатов в новый запрос - PullRequest
1 голос
/ 09 декабря 2010

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

Мой вопрос: Как я могу получить несколько значений, возвращаемых из первого запроса, и сделать так, чтобы мой второй запрос возвращался с несколькими результатами.Как вы можете видеть, я вставляю возвращенный результат запроса один в запрос два «msg_id =?» (Я использую «$ datas» для заполнения «?»), Но если мои результаты из запроса один имеют несколько значений, то как это будет работать??

Также как мне получить несколько результатов из первого запроса?в настоящий момент, если в mysql есть несколько значений, он получает только первое прочитанное значение.

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

} 

My КОНТРОЛЛЕР код выглядит следующим образом:

function index() {
    $this->load->model('data_model');
    $data['rows'] = $this->data_model->check();

    $this->load->view('home', $data);
} 

Спасибо всем, кто мне помогает, я очень признателен!

Ответы [ 2 ]

0 голосов
/ 09 декабря 2010

Вы можете найти полезным присоединение к базе данных здесь. Хотя я не совсем уверен, что вы пытаетесь сделать здесь (особенно в цикле 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 и msgto на основе msgto_message соответствия msg_id и может использовать критерий WHERE для msgto при возврате результатов из msg.

0 голосов
/ 09 декабря 2010

Правильно, вы не получаете только первую строку из первого запроса if ($w->num_rows() > 0) { $rowe = $w->row_array(); </p> <pre><code> $datas = $rowe['msgto_message']; }

Чтобы получить все записи, вам нужно перебрать результат <br> if ($w->num_rows() > 0) {<br> foreach($rowe = $w->row_array() as $datas) { </p> <pre><code> $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; }

}

}

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...