2012-11-12 95 views
0

等等。我一直在尝试更新密码。随机产生。但。如果我刷新数据库,没有任何反应。我的代码有什么问题?在mysql中更新行与codeigniter

这是我的控制器:

function create_password() 
{ 
    $this->load->model('members_model'); 

    $newRow = array(
     'name' => $this->input->post($a); 
     'value' => 
    ); 
    $this->membership_model->passchange($newRow); 
} 

这是我的模型:

function passchange() 
{ 
$this->db->select(); 
$this->db->from('membership'); 
$this->db->where('security_answer',$this->session->userdata('security_answer')); 

$q=$this->db->get(); 

if($q->num_rows() > 0) { 
$data = array(); 
foreach($q->result() as $row) { 

    $data['result']=$row; 

    $this->db->where('email_address', $this->session->userdata('email_address')); 
    $this->db->update('membership', 'password'); 
} 

return $data; 
} 

} 

,这是我的看法:

<?php echo form_open('login/create_password')?> 
<?php $this->load->view('includes/header'); 
$CI =& get_instance(); 
$CI->load->model('membership_model'); 
$result = $CI->membership_model->passchange(); 
foreach($result as $row) { 

    } 
?> 

Your Email Address is: &nbsp; <?php echo $row->email_address;?> <br/> 
<?php 
$a = random_string('alnum', 6); 
?> 

Your password is: &nbsp; <?php echo $a; "<br/>"?> 

<p align="right"><?php echo anchor('login/signin', 'Back to Login Page'); ?></p> 

密码在我的数据库是空白。它没有更新。请帮忙。先谢谢你! :)

回答

0

Marishka你真的真的需要看我继续这个过程之前给你的那些教程。你会得到一个点,你的应用程序非常糟糕,几乎不可能修复。

几乎你在那里做的所有事情都显示出不好的做法,其中最重要的是停止加载CI实例并从视图中的模型中获取数据。

以下是代码问题。

  1. 你使用你没有得到,因为你不张贴任何一个岗位创造价值$ NEWROW的数组。在视图中创建变量不会自动将其发回,将数据发布到需要在窗体中的控制器中,并且该窗体需要有一个操作来调用控制器功能。

  2. $ a不会等于任何东西,因为random_string不是一个我知道的php函数,它看起来像是刚刚从教程中拉出来的东西,而没有阅读它是如何创建的,所以$ a将会为空,即使它被重新发回到控制器,它仍然没有值插入到数据库中。

  3. 在您的模型中,您将$ newRow传递给您,实际上并没有将$ newRow放入函数中。

  4. 这与它没有任何关系,它不工作,但你是基于哪个记录来更新安全性答案?许多用户具有相同答案的可能性使得这是一个可怕的想法。

  5. 如前所述,活动记录更新函数中的第二个参数应该是一个数组。所以要理解这个功能在做什么,就像这样。

    $ this-> db-> update($ tableToUpdate,$ arrayOfValuesToUpdate);

值的阵列是关键对这样的密码,您将不得不像下面这样的数组:

$arrayOfValuesToUpdate = array(
    'nameOfPasswordFieldInYourDB' => 'value you want to set the password to' 
); 

我真拿你努力学习各种实例CI的感觉,教程,你真的需要停下来看看我在第一步之前链接你的nettuts教程。你的做法很糟糕,你对实际做的事情的理解很低,以至于你只是在复制和粘贴,并没有得到实际发生的事情。 Nettuts教程会给你一些基本的理解,你需要正确地做这些事情。

0

错误就出在这里

$this->db->update('membership', 'password'); 

这种方法获取数组作为第二个参数

$data['password'] = $newpassword; 
$this->db->update('membership', $data); 

还可以使用此方法

echo $this->db->last_query(); 

看到什么查询最近已运行。并且不要忘记使用更新指令的指令。再次阅读userguide它是非常有帮助的

http://ellislab.com/codeigniter/user_guide/database/active_record.html

+0

'$ newpassword'这个变量是否有新的随机密码的值? – GBD

+0

谢谢!我会现在试试.. – Marishka

+0

是什么是你的价值它只是例子 –