从数据库中获取信息(Fetching information from the database)

2019-10-17 09:16发布

我更新后的问题是在这里:

从数据库MYSQL和笨获取信息

请参见 :)


我只想问什么是与此代码的问题。 我一直在试图弄清楚这一点从昨晚起。 我再一次,我张贴了这个问题。 有什么毛病我的语法,我猜。

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。 成功登录后我在主页上看到的信息是丹尼斯的信息

同样的,如果我登录约翰

被取出的数据从数据库中存储的最后数据。 如何从属于特定的用户名登录我在数据库中选择

请回答。 非常感谢!

下面是一个UPDATE

这是我的看法形式的代码

<?php
$CI =& get_instance();
$CI->load->model('membership_model');
$result = $CI->membership_model->member_here();
?>


User Information:

</br></br></br>
Name: &nbsp;<?php echo $result->first_name; echo " ";   echo $result->last_name;?><br/></br>
Email Address: &nbsp;<?php echo $result->email_address; ?><br/></br>
Date of Birth: &nbsp;<br/></br>
Gender: &nbsp;<?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;   ?>&nbsp;<br/></br>
Security Answer: <?php echo $result->security_answer;   ?>&nbsp;<br/></br>

Answer 1:

在笨它通常这一点,除非你正在使用它做不同的定制认证库。

$user_id = $this->session->userdata('account_id');

所以,你应该使用

$this->db->where('user.id',$this->session->userdata('account_id'));

我改变了查找字段从名称到ID,因为你应该ID的执行查找,因为两个人可以有相同的名称等查找廉政局也更便捷。



Answer 2:

事情是不对您的数据库查询 - 你的描述表明,正在返回的每行(或至少丹尼斯行总是被退回)。

您的代码只是遍历所有返回的行并打印最后一个。

添加一些调试代码转储返回的数据通过它循环之前设置和优化您的查询。



Answer 3:

你有

$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);

loopview正如我上面提到。 这里是另一个类似的答案 。



文章来源: Fetching information from the database