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

标签 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);
} 

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

最佳答案

您可能会发现数据库连接在这里很有用。虽然我不完全确定您要在这里做什么(尤其是在那个 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_idmsgto_messagemsgmsgto 表连接在一起,并且可以在 msgto 上使用 WHERE 条件,同时从 msg 返回结果。

关于php - 如何将多个查询结果传递给新查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4396327/

相关文章:

php - 如何将样式应用于 ISSET 为真时我将回显的 PHP session 变量

javascript - 仅自动提交表单一次

javascript - 为什么我的 ajax 请求总是抛出错误?

php - linux worker 脚本/队列 (php)

php - PDO 插入不起作用

mysql - 如何对一列具有相同 ID 的最后两行求和,然后再次求和

php - 一些基本的 Python 问题

java - Hibernate 中的高效删除

php - MySQL 选择全部并根据另一列更新特定列字段

javascript - 在 Codeigniter 中自动刷新 div