php - 从数据库中的特定表返回多行

标签 php mysql codeigniter return-value

我目前正在开发一个私有(private)消息系统。现在我正在对收件箱进行编码,并在我的消息表中放置了 2 行临时数据以测试收件箱是否正常工作。

我正在尝试返回此查询为真的所有行:

<?php
class Messages_model extends CI_Model {


    public function inbox()
    {
        $user_id = $this->session->userdata('user_id');
        $username = $this->session->userdata('username');

        return $this->db->query("SELECT * FROM messages WHERE to_id = $user_id AND to_user = '$username'"); //to_id = id of currently logged in and to_user = username
    }
}

这是我的 Controller 。我目前只返回一行,即使应该返回两行。我在数据库中创建了两行,其中 to_id 和 to_user 等于我的 session 数据。所以他们应该都被归还,而不仅仅是一个。当我使用 row_array 时,第一行被返回,如 CI 用户指南中所述。当我使用 result_array() 时,仍然只返回一行。

我想要做的是在 html 中创建一个表,其中包含几列和 1 行作为每列的标题,例如主题、状态、日期。然后下面的行将是消息的实际主题数据和状态。然后我想运行一个 while 或 foreach 循环,每次从收件箱的消息表返回一行时都会回显该空行。

这是我的 Controller :

<?php
class Messages extends Public_Controller {
    public function  __construct() {
        parent::__construct();

        $this->load->model('messages_model');

    }

    public function inbox()
    {


        $query = $this->messages_model->inbox(); // return from model which is basically a row from messages table
        if ($query->num_rows() != 0) // if rows returned is equal to 1

        {       
        foreach ($query->result_array() as $row) // give array variable the value row_array

        // grab specific elements from row and assign to variables
        $row['id'];
        $row['to_id'];
        $row['to_user'];
        $row['from_id'];
        $row['from_user'];
        $row['time_sent'];
        $row['subject'];
        $row['message'];
        $row['opened'];
        $row['replied'];

        $this->load->view('messages/inbox', $row);
        }

       else
        {
            echo "You have 0 messages in your inbox";
        }
    }
}

我希望我能清楚地解释我要做什么。 提前致谢。

最佳答案

您的 for 循环中似乎缺少大括号:

 foreach ($query->result_array() as $row) // give array variable the value row_array
 {
    // grab specific elements from row and assign to variables
    $row['id'];
    $row['to_id'];
    $row['to_user'];
    $row['from_id'];
    $row['from_user'];
    $row['time_sent'];
    $row['subject'];
    $row['message'];
    $row['opened'];
    $row['replied'];
 }

for 循环仅适用于第一行,除非您用大括号将主体括起来。

关于php - 从数据库中的特定表返回多行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4696573/

相关文章:

php - 在 Jquery 中解析 json_encode 返回

php - Codeigniter配置文件加载

php - 如何使用 codeigniter 优化 activerecords?

php - 如何自动关闭截断段落中的标签

php - 求助php解析错误

java - 上传文件到 PHP 源时发送参数

sql - MySQL 连接多个表

php - 使用ajax的文件输入codeigniter

mysql - 什么时候使用mysql_real_escape_string?

php - 如何防止 PHP 使用过多的 MySQLi 连接?