繁体   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