/ / Wie übergebe ich mehrere abgefragte Ergebnisse zu einer neuen Abfrage - PHP, MySQL, Codeigniter

Wie übergebe ich mehrere abgefragte Ergebnisse zu einer neuen Abfrage - PHP, MySQL, Codeigniter

Es ist mir gelungen, eine Tabelle abzufragen, um Informationen zu erhalten, die benötigt werden, um eine andere Tabelle abzufragen (Wenn Sie einen besseren Weg sehen können, wäre ich dankbar!)

Meine Frage ist: Wie kann ich mehrere Werte zurückkommen lassen?erste Abfrage und habe meine zweite Abfrage mit mehreren Ergebnissen zurückkommen. Wie Sie sehen können, füge ich das zurückgegebene Ergebnis von Abfrage eins in Abfrage zwei "msg_id =?" Ein (ich benutze "$ datas", um das "?" Zu füllen), aber wenn meine Ergebnisse von Abfrage eins mehrere Werte haben, wie wird das funktionieren ?

Ebenfalls Wie kann ich erreichen, dass mehrere Ergebnisse von Abfrage eins erhalten? im Moment, wenn es mehrere Werte in MySQL gibt es nur die erste liest es liest.

Meine MODELL Code ist wie folgt:

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

}

Meine REGLER Code ist wie folgt:

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

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

Vielen Dank an alle, die mir helfen, ich schätze es sehr!

Antworten:

0 für die Antwort № 1

Vielleicht finden Sie hier einen Datenbankbeitritt hilfreich. Während ich mir nicht ganz sicher bin, was Sie hier versuchen (besonders in dieser foreach-Schleife!), Könnte Sie etwas in eine effizientere Richtung bringen:

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();
}
}

Dies fordert die Datenbank auf, sich zusammenzuschließen msg und msgto Tabellen basierend auf msgto_message passend msg_idund kann das WHERE-Kriterium verwenden msgto während die Ergebnisse aus msg.


0 für die Antwort № 2

Richtig, du bekommst nur die erste Zeile von Abfrage eins if ($w->num_rows() > 0) { $rowe = $w->row_array();

       $datas = $rowe["msgto_message"];
}
</ pre>

</ code> Um alle Datensätze zu erhalten, müssen Sie das Ergebnis durchlaufen
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;
}
</ pre>

}

}

</ code>