2016-11-09 89 views
4

在我看來,我試圖只顯示頁面頂部的user_username,然後顯示所有消息和下面的消息時間。我對foreach($message as $row)部件沒有問題,並且顯示正確。但是我無法獲得Messages by <?php echo $message['user_username']; ?>以顯示消息海報的名稱。任何幫助我如何做到這一點將不勝感激。在視圖中顯示單行sql查詢結果

查看

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

解釋這**我不能得到的海報的名稱顯示在該循環之外**並添加您的數據數組 –

+1

'user_username'有一個值或多個值? –

+1

將有多個值,但將所有的回答以下 – JL9

回答

3

試試這個

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

BCZ您的陣列總是產生零指數陣列

,你的模式應該是

return $query->result_array(); 
+1

相同 – JL9

+1

會這樣,這將是$信息[0 ] - > user_username,但它沒有整潔的方式。我甚至會用單獨的查詢來獲取用戶。一步步。 – cssBlaster21895

+1

@ cssBlaster21895工作!謝謝! – JL9

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

result()row()之間的差被result用於該SQL返回多1行的條件。和row()是相反的。這意味着只有1行。

_array表示您可以選擇是否返回arrayobject

如果您使用_array無任何方法,這意味着您必須通過->標識符訪問您的結果。例如,$result->memberID

否則,數組是[]。例如,$result['memberID']

選擇正確的一個,並正確使用它們。

+0

不錯的一個.... .. – devpro