/ / Comment passer plusieurs résultats interrogés à une nouvelle requête - php, mysql, codeigniter

Comment passer plusieurs résultats interrogés à une nouvelle requête - php, mysql, codeigniter

J'ai réussi à interroger une table pour obtenir les informations nécessaires pour interroger une autre table (si vous pouvez voir une meilleure façon, je vous en serais reconnaissant!)

Ma question est: Comment puis-je faire revenir plusieurs valeurs dupremière requête et avoir ma deuxième requête revenir avec plusieurs résultats. Comme vous pouvez le voir, j'insère le résultat renvoyé par la requête numéro un dans la requête deux "msg_id =?" (J'utilise "$ datas" pour remplir le "?") Mais si mes résultats de requête un ont plusieurs valeurs ?

Aussi Comment puis-je lui faire obtenir plusieurs résultats de la requête un? pour le moment, si plusieurs valeurs sont présentes dans mysql, elles ne capturent que la première.

ma MODÈLE le code est le suivant:

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

}

ma MANETTE le code est le suivant:

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

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

Merci à tous ceux qui m'aident, je l'apprécie énormément!

Réponses:

0 pour la réponse № 1

Vous trouverez peut-être une jointure de base de données utile ici. Bien que je ne sois pas tout à fait sûr de ce que vous essayez de faire ici (en particulier dans cette boucle foreach!), Quelque chose comme cela pourrait vous aider à aller plus efficacement:

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

Cela demande à la base de données de réunir les msg et msgto tableaux basés sur msgto_message correspondant à msg_id, et peut utiliser les critères WHERE sur msgto en retournant les résultats de msg.


0 pour la réponse № 2

D'accord, vous n'obtenez que la première ligne de la requête un if ($w->num_rows() > 0) { $rowe = $w->row_array();

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

</ code> Pour obtenir tous les enregistrements dont vous avez besoin pour parcourir le résultat
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>