我的更新问题在这里:
Fetching information from the database MYSQL & Codeigniter
请参阅:)
我只想问一下这段代码有什么问题。自昨晚以来,我一直在试图解决这个问题。而我,我再次发布这个问题。我想我的语法有问题。
function member_here()
{
$this->db->select('');
$this->db->from('membership');
$this->db->where('username',$this->input->post('username'));
$q=$this->db->get('');
if($q->num_rows() > 0) {
$data = array();
foreach($q->result() as $row) {
$data=$row;
}
return $data;
}
}
无论如何。该输出将是来自数据库的选定信息。
,但
我认为代码的某些部分是正确的,因为它提供了输出。但它仍然不对。
假设我有这些数据:
|-------Name-----|-----Username-----|---------Email Address----------|
| Marishka | marishkapv | marishka@email.com |
| John | johndoe | john@doe.com |
| Dennis | dennisv | dennis@v.com |
所以,我使用Marishka登录。 成功登录后。我在主页上看到的信息是丹尼斯的信息
如果我登录 john
,则相同从数据库中提取的数据是最后存储的数据。如何从属于我登录的特定用户名的数据库中选择
请回答。非常感谢你!
这里有更新
这是我的视图表单中的代码
<?php
$CI =& get_instance();
$CI->load->model('membership_model');
$result = $CI->membership_model->member_here();
?>
User Information:
</br></br></br>
Name: <?php echo $result->first_name; echo " "; echo $result->last_name;?><br/></br>
Email Address: <?php echo $result->email_address; ?><br/></br>
Date of Birth: <br/></br>
Gender: <?php echo $result->gender; ?><br/></br>
</br></br></br>
Account Information:<br/></br></br>
Username:<?php echo $this->session->userdata('username'); ?><br/></br>
Security Question: <?php echo $result->security_question; ?> <br/></br>
Security Answer: <?php echo $result->security_answer; ?> <br/></br>
答案 0 :(得分:0)
在codeigniter中通常是这样,除非您使用的是自定义身份验证库,否则会以不同方式执行此操作。
$user_id = $this->session->userdata('account_id');
所以你应该使用
$this->db->where('user.id',$this->session->userdata('account_id'));
我将查找字段从name更改为id,因为您应该对ID执行查找,因为两个人可能具有相同的名称等.INT的查找也更快。
答案 1 :(得分:0)
您的数据库查询出了问题 - 您的描述表明正在返回每一行(或者至少返回Dennis的行)。
您的代码只循环遍历所有返回的行并打印最后一行。
添加一些调试代码以在循环之前转储返回的数据集并优化查询。
答案 2 :(得分:0)
你有
$data = array();
foreach($q->result() as $row) {
$data=$row; // every time $data variable is being updated with new value
}
它将返回最后一条记录,因为每次循环都会使用新值更新$data
,如果您将其更改为以下
$data = array();
foreach($q->result() as $row) {
$data[]=$row;
}
然后它会将所有行保存为$data
中的数组。
或者,您可以使用以下代码而不使用foreach
循环
$data['result']=$q->result();
在您的视图中,您可以循环播放
foreach($result as $row) {
echo $row->name;
...
}
更新:您应该正确使用模型,视图和控制器。您在model
中使用view
,但不应该这样做。加载并使用model
中的controller
,然后从控制器加载view
并传递数据,
$this->load->view('your_view_name', $data);
我loop
内view
正如我上面提到的那样。这是另一个similar answer。