[英]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: <?php echo $row->email_address;?> <br/>
<?php
$a = random_string('alnum', 6);
?>
Your password is: <?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实例并从视图中的模型获取数据。
这是您的代码本身存在的问题。
您正在使用未获得的发布值创建$ newRow数组,因为您没有发布任何内容。 在视图中创建变量不会自动将其回传,而是要将数据发布到控制器中,该变量需要采用某种形式,并且该表单需要具有操作以调用控制器函数。
$ a不会等于任何东西,因为random_string不是我所知道的php函数,它看起来就像是您刚从教程中间抽出的东西,而没有阅读它的创建方式,因此$ a将会是null,即使将其发布回控制器,它也没有任何值可插入数据库。
在您的模型中,您要将$ newRow传递给您,实际上并没有使$ newRow进入函数。
这与它不起作用无关,但是您要根据安全记录来更新哪个记录? 许多用户有相同答案的可能性使这成为一个可怕的想法。
如前所述,活动记录更新功能中的第二个参数应该是一个数组。 因此,要了解该功能在做什么,它会像这样分解。
$ 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.