我成功查询了一个表,以获取查询另一个表所需的信息(如果你能看到更好的方式,我将不胜感激!)
我的问题是:如何从第一个查询中返回多个值,并让我的第二个查询返回多个结果。 正如您所看到的,我将查询一的返回结果插入到查询二“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 :(得分: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}}将msgto
和msgto_message
表连接在一起,并且可以在msg_id
上使用WHERE critera从msgto
返回结果。