The insert() method accepts the associative array of data and is passed into this method as the only parameter to create a new row of data in the database.

The array’s keys must match the name of the columns in a $table, while the array’s values are the values to save for that key:

Syntax:

$this->db->table('table_name')->insert('array_of_objects');

Example:

$data = [
    'username' => 'infovistar',
    'email'    => 'infovistarindia@gmail.com',
];
$this->db->table($table)->insert($data);

Create a new row of data in the database

1. Create a user_info table in the MySQL database.

CREATE TABLE `user_info` ( 
`id` INT NOT NULL AUTO_INCREMENT , 
`first_name` VARCHAR(255) NOT NULL , 
`last_name` VARCHAR(255) NOT NULL , 
`email` VARCHAR(255) NOT NULL , 
PRIMARY KEY (`id`)
) ENGINE = InnoDB;

2. Copy and Paste the following lines in app/Config/Routes.php

$routes->add('user/add', 'User::add');
$routes->post('user/save', 'User::save');

3. Create an add.php file in app/Views/ directory

<!DOCTYPE html>
<html>

<head>
    <title>Add user</title>
</head>

<body>
    <form method="post" action="<?php echo base_url('user/save'); ?>">
        <table width="600" border="1" cellspacing="5" cellpadding="5">
            <tr>
                <td width="230">First Name</td>
                <td width="329">
                    <input type="text" name="txtFirstName" />
                </td>
            </tr>
            <tr>
                <td>Last Name</td>
                <td>
                    <input type="text" name="txtLastName" />
                </td>
            </tr>
            <tr>
                <td>Email ID</td>
                <td>
                    <input type="email" name="txtEmail" />
                </td>
            </tr>
            <tr>
                <td colspan="2" align="center">
                    <input type="submit" name="btnAddUser" value="Add user" />
                </td>
            </tr>
        </table>
    </form>
</body>

</html>

4. Create a model file UserModel.php in the app/Models/ directory.

<?php 
namespace App/Models;

use CodeIgniter/Model;
use CodeIgniter/Database/ConnectionInterface;

class UserModel extends Model {
    
    protected $db;
    public function __construct(ConnectionInterface &$db) {
        $this->db =& $db;
    }

    function add($data) {
        return $this->db
                        ->table('user_info')
                        ->insert($data);
    }
    
}

5. Create a controller file User.php in the app/Controllers/ directory.

<?php
namespace App/Controllers;

use App/Models/UserModel;

class User extends BaseController {

    public function __construct() {

        $db = db_connect();
        $this->userModel = new UserModel($db);
    }

    public function add() {
        echo view('add');
    }

    public function save() {
        $first_name = $this->request->getPost('txtLastName');
        $last_name  = $this->request->getPost('txtLastName');
        $email      = $this->request->getPost('txtEmail');
    
        $data = [
            'first_name'    => $first_name,
            'last_name'     => $last_name,
            'email'         => $email,
        ];

        $result = $this->userModel->add($data);
        if($result) {
            echo "New user is registered successfully.";
        } else {
            echo "Something went wrong";
        }
    }
}