在我看来,我试图只在页面顶部显示一次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();
}
}
答案 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();
}
有几种方法可以从模型中返回数据,
$query->result()
$query->result_array()
$query->row()
$query->row_array()
result()
和row()
之间的差异result
用于SQL返回多于1行的条件。而row()
则相反。这意味着只有一行。
_array
表示您可以选择是返回array
还是object
。
如果您使用_array
- 免费方法,则表示您必须通过->
标识符访问结果。例如,$result->memberID
。
否则,数组为[]
。例如,$result['memberID']
。
选择正确的,并正确使用它们。