php 更新记录 codeigniter
声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow
原文地址: http://stackoverflow.com/questions/13895098/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me):
StackOverFlow
Updating records codeigniter
提问by ethio
I am trying to update a table where id of the row is entered and title is selected through a dropdown list, but I have two problems. Firstly Im not sure how to pass the data to the model, and the second problem is actually updating the table using active record.
我正在尝试更新一个表,其中输入了行的 id 并通过下拉列表选择了标题,但我有两个问题。首先我不确定如何将数据传递给模型,第二个问题实际上是使用活动记录更新表。
controller class
控制器类
class Update extends CI_Controller {
public function __construct()
{
parent::__construct();
//$this->load->model('addmodel');
//$this->load->helper('form');
}
public function index()
{
$this->load->view('updview');
}
public function updtitle()
{
$data = array(
'id' => $this->input->post('id'),
'title' => $this->input->post('title') );
//$data1['data'] = $data;
$data1['data'] = $this->updmodel->upddata($data);
$this->load->view('updview', $data1);
}
}
?>
model class
模型类
class Updmodel extends CI_Model {
// model constructor function
function __construct() {
parent::__construct(); // call parent constructor
$this->load->database();
}
public function upddata($data) {
$this->db->where('emp_no', $data['id']);
$this->db->update('title', $data['title']);
return;
}
}
?>
view
看法
Update employee title
更新员工职称
<form action="http://localhost/ecwm604/index.php/update/updtitle" method="POST">
employee id:
<input type=text name="id"><br />
change title to:
<select name="title">
<option value="Assistant Engineer">Assistant Engineer</option>
<option value="Engineer">Engineer</option>
<option value="Senior Engineer">Senior Engineer</option>
<option value="Senior Staff">Senior Staff</option>
<option value="Staff">Staff</option>
</select><br />
<input type="submit" value="submit"/>
<br />
<?php
print_r($data);
//echo $data['title'];
?>
</body>
</html>
回答by The Alpha
In your Controller
在您的控制器中
public function updtitle()
{
$data = array(
'table_name' => 'your_table_name_to_update', // pass the real table name
'id' => $this->input->post('id'),
'title' => $this->input->post('title')
);
$this->load->model('Updmodel'); // load the model first
if($this->Updmodel->upddata($data)) // call the method from the model
{
// update successful
}
else
{
// update not successful
}
}
In Your Model
在您的模型中
public function upddata($data) {
extract($data);
$this->db->where('emp_no', $id);
$this->db->update($table_name, array('title' => $title));
return true;
}
The active record query is similar to
活动记录查询类似于
"update $table_name set title='$title' where emp_no=$id"
回答by Raham
In your_controller write this...
在 your_controller 中写这个...
public function update_title()
{
$data = array
(
'table_id' => $this->input->post('table_id'),
'table_title' => $this->input->post('table_title')
);
$this->load->model('your_model'); // First load the model
if($this->your_model->update_title($data)) // call the method from the controller
{
// update successful...
}
else
{
// update not successful...
}
}
While in your_model...
在 your_model 中...
public function update_title($data)
{
$this->db->set('table_title',$data['title'])
->where('table_id',$data['table_id'])
->update('your_table');
}
This will works fine...
这将工作正常...
回答by vpgodara
How to update in codeignitor?
如何在codeignitor中更新?
whenever you want to update same status with multiple rows you use where_in insteam of where or if you want to change only single record can use where.
每当你想用多行更新相同的状态时,你可以使用 where_in insteam of where 或者如果你只想更改单个记录可以使用 where。
below is my code
下面是我的代码
$conditionArray = array(1, 3, 4, 6);
$this->db->where_in("ip_id", $conditionArray);
$this->db->update($this->table, array("status" => 'active'));
its working perfect.
它的工作完美。
回答by May Noppadol
In codeigniter doc if you update specific field just do this
在 codeigniter doc 中,如果您更新特定字段,请执行此操作
$data = array(
'yourfieldname' => value,
'name' => $name,
'date' => $date
);
$this->db->where('yourfieldname', yourfieldvalue);
$this->db->update('yourtablename', $data);

