从数据库中获取信息

时间:2012-11-11 23:49:01

标签: php mysql database codeigniter xampp

我的更新问题在这里:

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: &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>

3 个答案:

答案 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);

loopview正如我上面提到的那样。这是另一个similar answer