2012-11-12 46 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

是什麼是你的價值它只是例子 –