In CodeIgniter 3, the update() method is used to modify existing records in the database. The UPDATE SQL command is used to change the data in one or more columns of a table.

Basic Syntax for MySQL Update Query

UPDATE table_name 
SET column1 = value1, column2 = value2, ...
WHERE some_column = some_value;

 

Note: The WHERE clause specifies which records should be updated. If you omit the WHERE clause, all records in the table will be updated!

 

Step-by-Step Implementation

To demonstrate how to update records, we’ll create a simple application with the following structure:

File Structure

application/

├── controllers/
│ └── User.php

├── models/
│ └── User_model.php

└── views/
├── list.php
└── edit.php

 

Step 1: Create list.php in application/views/

The list.php file will display the list of users and provide an option to update each user’s information.

File: application/views/list.php

 

<table width="600" 
	border="1" cellspacing="5" cellpadding="5">
	<tr style="background:#CCC">
		<th>Sr No</th>
		<th>First_name</th>
		<th>Last_name</th>
		<th>Email Id</th>
		<th>Update</th>
	</tr>
	<?php $i=1; 
foreach($result as $key => $row) { echo "<tr>"; echo "<td>".++$key."</td>"; echo "<td>".$row->first_name."</td>"; echo "<td>".$row->last_name."</td>"; echo "<td>".$row->email."</td>"; echo "<td><a href="<?php echo base_url('user/edit/'.$row->id);?>">Edit</a></td>";
echo "</tr>";
$i++; 
} ?> </table>

 

Explanation

  • The table displays a list of users with their details.
  • The “Update” column contains links to edit each user’s information by passing their id to the edit method in the controller.

 

Step 2: Create edit.php in application/views/

The edit.php file provides a form to update user details.

File: application/views/edit.php

 

<html>
<head>
<title>Update user details</title>
</head>
 
<body>
 <?php
  if($result) {
  ?>
	<form method="post" 
	action=”<?php echo base_url(‘user/update’); ?>”>
		<table width="600" border="1" 
		cellspacing="5" cellpadding="5">
  <tr>
    <td width="230">Enter Your Name </td>
    <td width="329">
	<input type="hidden" name="txtId" 
	value="<?php echo $result->id; ?>"/>
<input type="text" name="txtFirstName" 
value="<?php echo $result->first_name; ?>"/></td>
  </tr>
  <tr>
    <td>Enter Your Email </td>
    <td><input type="text" name="txtLastName" 
    value="<?php echo $result->last_name; ?>"/></td>
  </tr>
  <tr>
    <td>Enter Your Mobile </td>
    <td><input type="text" name="txtEmail" 
    value="<?php echo $result->email; ?>"/></td>
  </tr>
  <tr>
    <td colspan="2" align="center">
	<input type="submit" name="update" 
	value="Update"/></td>
  </tr>
</table>
	</form>
	<?php } ?>
</body>
</html>

 

Explanation

  • The form displays the user’s current details fetched from the database.
  • Upon submission, the form data is sent to the update method in the User controller.

 

 

Step 3: Create User_model.php in application/models/

The User_model handles all database operations, including fetching and updating user records.

File: application/models/User_model.php

 

class User_model extends CI_Model  {
	/*Select multiple records*/
	function list() {
		$this->db->select([“*”]);
		$this->db->from(‘user_info’);
		$query = $this->db->get();
		return $query->result();
	}
	
	/*Select single record*/
	function get_user($id) {
		$this->db->select([“*”]);
		$this->db->from(‘user_info’);
		$this->db->where([“id” => $id]);
		$query = $this->db->get();
		return $query->row();
	}
	
	/*Update single record*/
	public function update($id, $data) {
		$where = [“id” => $id];
		return $this->db->update(‘user_info’, $where, $data);
	}
	
}

 

Explanation

  • list(): Fetches all users from the user_info table.
  • get_user($id): Fetches a specific user’s details using their ID.
  • update($id, $data): Updates a user’s record based on the ID and data passed.

 

Step 4: Create User.php in application/controllers/

The User controller handles the request and response flow, including loading views and interacting with the model.

File: application/controllers/User.php

 

class User extends CI_Controller {

	public function __construct() {
		/*call CodeIgniter's default Constructor*/
		parent::__construct();

		/*load model*/
		$this->load->model('User_model');
	}
	
	public function list() {
		$data[‘result’]	= $this->user_model->list();
		$this->load->view(‘list’, $data);
	}

	public function edit($id) {
		$data[‘result’]	= $this->user_model->get_user($id);
		$this->load->view(‘list’, $data);
	}

	public function update() {
		$id		= $this->input->post(‘txtId’);
		$first_name	= $this->input->post(‘txtLastName’);
		$last_name	= $this->input->post(‘txtLastName’);
		$email		= $this->input->post(‘txtEmail’);
		
		$data = [
			‘first_name’		=> $first_name,
			‘last_name’		=> $last_name,
			‘email’			=> $email,
		];

		$result = $this->user_model->update($id, $data);
		if($result) {
			echo “User details are updated successfully.”;
		} else {
			echo “Something went wrong”;
		}
	}
}

 

Explanation

  • Constructor: Loads the User_model to interact with the database.
  • list(): Loads the list.php view with all users fetched from the database.
  • edit($id): Loads the edit.php view with a specific user’s details to update.
  • update(): Handles form data submission and calls the update() method in the User_model to update the record.

 

Summary

  • Views: Created list.php for displaying users and edit.php for updating user information.
  • Model: Created User_model.php for fetching and updating data in the user_info table.
  • Controller: Created User.php to handle requests, load views, and process updates.