在视图中显示单行sql查询结果

时间:2016-11-09 15:05:40

标签: sql codeigniter

在我看来,我试图只在页面顶部显示一次user_username,然后在下面显示所有消息和消息时间。我对foreach($message as $row)部分没有问题并且显示正确。但是我无法让Messages by <?php echo $message['user_username']; ?>显示消息海报的名称。任何有关如何做到这一点的帮助将不胜感激。

查看

<html>
<head>
    <title> View Messages </title>
</head>

<body>
    Messages by <?php echo $message['user_username']; ?>: 

    <?php foreach($message as $row){?>
        <?php echo $row->text;?>
        <br>
        <?php echo $row->posted_at;?>
        <br><br>
    <?php }?>
</body>
</html>

控制器

<?php
defined('BASEPATH') OR exit('No direct script access allowed');

class User extends CI_Controller {

public function view($name){

    //Error reporting if no name entered in url
    if ($name == NULL) {
        echo "no name entered in url";
        return;
    } else {
        $this->load->model('messages_model');
        $message['message'] = $this->messages_model->getMessagesByPoster($name);
        $this->load->view('ViewMessages',$message);
    }
}
}

模型

 <?php
 class Messages_model extends CI_Model {


public function __construct() {
    parent::__construct();
    $this->load->database();
}

//Return all messages posted by user with specified username
public function getMessagesByPoster($name) {
    $sql = "SELECT user_username, text, posted_at FROM Messages WHERE user_username = ?;";
    $query = $this->db->query($sql, $name);
    return $query->result();
}
}

2 个答案:

答案 0 :(得分:3)

试试这个

Messages by <?php echo $message[0]['user_username']; ?>
                                ^

Bcz你的数组总是产生零索引数组

,你的模型应该是

return $query->result_array();

答案 1 :(得分:3)

如果您的查询只生成一行并且您想将其设置为数组,请使用以下方法

public function getMessagesByPoster($name) {
    $sql = "SELECT user_username, text, posted_at FROM Messages WHERE user_username = ?;";
    $query = $this->db->query($sql, $name);
    return $query->row_array();
}

有几种方法可以从模型中返回数据,

  1. $query->result()
  2. $query->result_array()
  3. $query->row()
  4. $query->row_array()
  5. result()row()之间的差异result用于SQL返回多于1行的条件。而row()则相反。这意味着只有一行。

    _array表示您可以选择是返回array还是object

    如果您使用_array - 免费方法,则表示您必须通过->标识符访问结果。例如,$result->memberID

    否则,数组为[]。例如,$result['memberID']

    选择正确的,并正确使用它们。