使用 PHP 在 CodeIgniter 中使用用户输入的值更新数据库表
Posted
技术标签:
【中文标题】使用 PHP 在 CodeIgniter 中使用用户输入的值更新数据库表【英文标题】:Update Database tables with values input by user in CodeIgniter using PHP 【发布时间】:2017-02-27 06:50:38 【问题描述】:我正在尝试使用取自用户的值更新数据库中的一个用户表。但由于某种原因,它没有更新任何内容。
HTML 表单
<form class="form-horizontal" method = "post">
<fieldset>
<!-- Form Name -->
<legend>User Details</legend>
<div>
<?php echo $this->session->flashdata('msg'); ?>
</div>
<!-- Text input-->
<div class="form-group">
<label class="col-md-4 control-label" for="name">Full Name</label>
<div class="col-md-8">
<input id="name" name="name" type="text" placeholder="something" class="form-control input-md">
</div>
</div>
<!-- Text input-->
<div class="form-group">
<label class="col-md-4 control-label" for="dob">Date of Birth</label>
<div class="col-md-4">
<input id="dob" name="dob" type="text" placeholder="" class="form-control input-md">
</div>
</div>
<!-- Multiple Radios -->
<div class="form-group">
<label class="col-md-4 control-label" for="gender">Gender</label>
<div class="col-md-2">
<select id="gender" name="gender" class="form-control">
<option value="1">Male</option>
<option value="2">Female</option>
</select>
</div>
</div>
<!-- Text input-->
<div class="form-group">
<label class="col-md-4 control-label" for="degree">Degree</label>
<div class="col-md-8">
<input id="degree" name="degree" type="text" placeholder="degree" class="form-control input-md">
</div>
</div>
<!-- Text input-->
<div class="form-group">
<label class="col-md-4 control-label" for="specialization">Specialization</label>
<div class="col-md-8">
<input id="specialization" name="specialization" type="text" placeholder="specialization" class="form-control input-md">
</div>
</div>
<!-- Select Basic -->
<div class="form-group">
<label class="col-md-4 control-label" for="year">Degree Year</label>
<div class="col-md-2">
<select id="year" name="year" class="form-control">
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
<option value="4">4</option>
<option value="5">5</option>
</select>
</div>
</div>
<!-- Select Basic -->
<div class="form-group">
<label class="col-md-4 control-label" for="semester">Semester</label>
<div class="col-md-2">
<select id="semester" name="semester" class="form-control">
<option value="1">1</option>
<option value="2">2</option>
</select>
</div>
</div>
<!-- File Button -->
<div class="form-group">
<label class="col-md-4 control-label" for="filebutton">Upload Profile Picture</label>
<div class="col-md-4">
<input id="filebutton" name="filebutton" class="input-file" type="file">
</div>
</div>
<!-- Button -->
<div class="form-group">
<label class="col-md-4 control-label" for="submit"></label>
<div class="col-md-4">
<a href="<?php echo base_url("/index.php/studentDashboardController/saveUserDetails"); ?>" >
<button id="submit" name="submit" class="btn btn-primary">Save Changes</button>
</a>
</div>
</div>
</fieldset>
studentDashboardController
public function saveUserDetails()
$this->load->model('userModel');
if (isset($this->session->userdata['logged_in']))
$username = ($this->session->userdata['logged_in']['username']);
$user = $this-> userModel-> getUserUid($username); //Gets the uid of the current user
$this->userModel->saveUserDetails($user);
$this->session->set_flashdata('msg', '<div class="alert alert-success text-center">Successfully Inserted Data</div>');
$this->load->view('studentDashboard/common',$data);
redirect(base_url('index.php/studentDashboard/editProfile',$data1));
用户模型
public function saveUserDetails($uid)
$data = array(
'name' => $this->input->post('name')
);
$this->db->where("uid",$uid);
$this->db->update("sysuser",$data);
sysuser 有 uid 和 name 字段。我不确定我在这里做错了什么。在这方面的任何帮助将不胜感激
【问题讨论】:
@questiontable 如果您有任何错误,请发布? 【参考方案1】:您不会将发布数据发送给控制器。把$this->userModel->saveUserDetails($user);
改成
$this->userModel->saveUserDetails($user,$this->input->post('name'));
现在模型应该是这样的
public function saveUserDetails($uid,$name)
$data = array(
'name' => $name
);
$this->db->where("uid",$uid);
$this->db->update("sysuser",$data);
并确保您已正确设置表单操作,例如
<form class="form-horizontal" method="post" action="<?php echo site_url('studentDashboardController/saveUserDetails');?>">
【讨论】:
我想知道,如果我必须将从用户那里收集的多个值插入两个不同的表中,我该怎么做? 无法理解。 在我上面提出的问题中,我只是将name
更新到我拥有的sysuser
数据库表中。现在我需要在更新名称本身时将一些其他详细信息(例如上面表单中请求的详细信息)插入到studentprofile
表中。如何将所有用户输入发送到模型的方法以更新sysuser
表并将其他用户输入插入studentprofile
表?
像$this->userModel->saveUserDetails($user,$this->input->post());
一样发送数据并像public function saveUserDetails($uid,$post)$name = $post['name'];$another = $post['another']
一样抓取以上是关于使用 PHP 在 CodeIgniter 中使用用户输入的值更新数据库表的主要内容,如果未能解决你的问题,请参考以下文章
使用 PHP/CodeIgniter 在 MySQL 中获取最后执行的查询
使用 get_instance() 时自动完成 Codeigniter