簡體   English   中英

用codeigniter更新mysql中的行

[英]update rows in mysql with 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>

我的數據庫中的密碼為空。 它沒有更新。 請幫忙。 先感謝您! :)

錯誤就在這里

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

此方法將數組作為第二個參數

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

也用這種方法

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

查看最近運行過的查詢。 不要忘記使用其中指令與更新指令。 再次閱讀用戶指南,這非常有幫助

https://www.codeigniter.com/userguide2/database/active_record.html

Marishka在繼續此過程之前,您確實真的需要看過我給您的那些教程。 您將到達一個嚴重混亂的應用程序狀態,幾乎無法修復。

您在該處所做的幾乎所有操作都顯示了不良做法,其中最重要的一點是停止加載CI實例並從視圖中的模型獲取數據。

這是您的代碼本身存在的問題。

  1. 您正在使用未獲得的發布值創建$ newRow數組,因為您沒有發布任何內容。 在視圖中創建變量不會自動將其回傳,而是要將數據發布到控制器中,該變量需要采用某種形式,並且該表單需要具有操作以調用控制器函數。

  2. $ a不會等於任何東西,因為random_string不是我所知道的php函數,它看起來就像是您剛從教程中間抽出的東西,而沒有閱讀它的創建方式,因此$ a將會是null,即使將其發布回控制器,它也沒有任何值可插入數據庫。

  3. 在您的模型中,您要將$ newRow傳遞給您,實際上並沒有使$ newRow進入函數。

  4. 這與它不起作用無關,但是您要根據安全記錄來更新哪個記錄? 許多用戶有相同答案的可能性使這成為一個可怕的想法。

  5. 如前所述,活動記錄更新功能中的第二個參數應該是一個數組。 因此,要了解該功能在做什么,它會像這樣分解。

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

值數組是鍵對,因此對於密碼,您將具有如下數組:

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

我真的感覺到您正在嘗試從各種示例和教程中學習CI,您確實確實需要停下來看看從第一步開始我與您鏈接的nettuts教程。 您的做法很糟糕,對實際操作的了解程度很低,以至於您只是復制和粘貼而沒有得到應該實際發生的結果。 Nettuts教程將為您提供基礎知識,以幫助您正確執行這些操作。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM