Insert data with CodeIgniter Active Records
My question is about inserting data with CodeIgniter Active record. There's an example on the guide to insert data with array:
$data = array(
'title' => 'My title' ,
'name' => 'My Name' ,
'date' => 'My date'
);
$this->db->insert('mytable', $data);
I wonder if there i开发者_运维百科s some other way to insert the active record data, For example in in similar syntax:
$this -> db -> select (*);
$this -> db -> from ('users');
$this -> db -> where('id', $id);
$this -> db -> limit(1);
$query = $this->db->get();
Thanks.
You may use set()
method.
According to CI documentation, you may use following syntax:
$this->db->set('name', $name);
$this->db->insert('mytable');
which will produce following query:
INSERT INTO mytable (name) VALUES ('{$name}')
Hopefully it's what you're looking for.
**its very simple just follow the following steps**<br>
**first prepare a dabase in mysql**<br>
-- phpMyAdmin SQL Dump
-- version 3.5.2.2
-- http://www.phpmyadmin.net
--
-- Host: 127.0.0.1
-- Generation Time: Jul 02, 2013 at 03:48 AM
-- Server version: 5.5.27
-- PHP Version: 5.4.7
SET SQL_MODE="NO_AUTO_VALUE_ON_ZERO";
SET time_zone = "+00:00";
/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8 */;
--
-- Database: `persons`
--
-- --------------------------------------------------------
--
-- Table structure for table `person`
CREATE TABLE IF NOT EXISTS `person` (
`id` int(9) NOT NULL AUTO_INCREMENT,
`person_name` varchar(50) NOT NULL,
`person_address` varchar(50) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=1728 ;
--
-- Dumping data for table `person`
--
INSERT INTO `person` (`id`, `person_name`, `person_address`) VALUES
(1726, 'soma', 'goma'),
(1727, 'roma', 'toma');
/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
<br>
**Open Codeigniter and make the follwoing changes in the following files**<br>
**make changes in autoload.php**<br>
**it is located at**<br>
**C:\xampp\htdocs\CI_person\application\config**<br>
from
**$autoload['libraries'] = array('');** to
**$autoload['libraries'] = array('database');**$config['base_url']<br>
make changes in config.php
**it is located at**<br>
**C:\xampp\htdocs\CI_person\application\config**<br>
$config['base_url'] = ''; to
$config['base_url'] = 'http://localhost/';
make changes in database.php
**it is located at**<br>
**C:\xampp\htdocs\CI_person\application\config**<br>
$db['default']['hostname'] = '';<br>
$db['default']['username'] = '';<br>
$db['default']['password'] = '';<br>
$db['default']['database'] = '';<br>
$db['default']['dbdriver'] = 'mysql';<br>
to<br>
$db['default']['hostname'] = 'localhost';<br>
$db['default']['username'] = 'root';<br>
$db['default']['password'] = '';<br>
$db['default']['database'] = 'persons';<br>
$db['default']['dbdriver'] = 'mysql';<br>
now open the views folder located at<br>
**C:\xampp\htdocs\CI_person\application**<br>
**Create a view persons.php in C:\xampp\htdocs\CI_person\application\views**
<html>
<head>
</head>
<body>
<script language="javascript">
function clicked()
{
alert("You clicked");
document.getElementById('check').value='I';
}
</script>
<form id="entry" name="entry" method="post" >
<input type="hidden" name="check" id="check" value="">
Person Name
<input type="text" name="person_name" id="person_name" />
<br />
Person Address
<input type="text" name="person_address" id="person_address" />
<input type="submit" name="button" id="button" value="Submit" onClick="clicked()">
<table cellpadding="2px" width="600px" border="2">
<?php
foreach ($persons as $person){
$id = $person['id'];
$name = $person['person_name'];
$address = $person['person_address'];
?>
<tr>
<td><?php echo $name; ?></td>
<td><?php echo $address; ?><br /> </td>
</tr>
<?php } ?>
</table>
</form>
</body>
</html>
**create controller named persons.php in Controller folder**<br>
<?php if (!defined('BASEPATH')) exit('No direct script access allowed');
class Persons extends CI_Controller {
public function __construct()
{
parent::__construct();
$this->load->model('Person_model');
}
public function index()
{
$person_name = $this->input->post('person_name');
$person_address = $this->input->post('person_address');
$check= $this->input->post('check');
if ($check=="")
{
$this->data['persons'] = $this->Person_model->get_all();
$this->load->view('persons', $this->data);
}
if ($check=="I")
{
/*$this->load->model('Person_model');
$this->Person_model->insert_to_db($this->input->post('person_name'),$this->input->post('person_address'));
*/
$this->Person_model->person_name = $person_name;
$this->Person_model->person_address =$person_address;
$this->Person_model->insert_into_db();
$this->data['persons'] = $this->Person_model->get_all();
$this->load->view('persons', $this->data);
}
}
}
**now create model as defined below in Models folder**<br>
<?php
class Person_model extends CI_Model
{
public $person_name;
public $person_address;
public function __construct()
{
}
public function get_all()
{
$this->db->select('id,person_name,person_address');
$query= $this->db->get('person');
return $query->result_array();
}
function insert_into_db()
{
$f1 = $this->person_name;
$f2 = $this->person_address;
$this->db->query("INSERT INTO person(person_name,person_address) VALUES('$f1','$f2')");
}
}
?>
**Save all and run**
Other way of inserting data in Codeigniter
$query = $this->db->query('YOUR SQL QUERY');
or
$this->db->set('name', $name);
$this->db->insert('mytable'); // Produces: INSERT INTO mytable (`name`) VALUES ('{$name}')
Hopefully it can help you.
精彩评论