2011-07-08 123 views
0

我的问题是关于用CodeIgniter活动记录插入数据。有一个在引导一个例子,与阵列插入数据:用CodeIgniter活动记录插入数据

$data = array(
    'title' => 'My title' , 
    'name' => 'My Name' , 
    'date' => 'My date' 
); 

$this->db->insert('mytable', $data); 

我不知道是否有插入活动记录的数据,例如在类似的语法一些其他的方式:

$this -> db -> select (*); 
    $this -> db -> from ('users'); 
    $this -> db -> where('id', $id); 
    $this -> db -> limit(1); 

    $query = $this->db->get(); 

感谢。

回答

4

您可以使用set()方法。

根据C11的文档,你可以使用下面的语法:

$this->db->set('name', $name); 
$this->db->insert('mytable'); 

这将产生以下查询:

INSERT INTO mytable (name) VALUES ('{$name}') 

希望这是你在找什么。

+0

一旦你插入记录...你从模型返回什么,以表明记录已成功插入?谢谢 –

+0

@b_dubb您可以使用insert_id()辅助方法。检查文档页面的详细信息:http://ellislab.com/codeigniter/user-guide/database/helpers.html –

0
**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 @[email protected]@CHARACTER_SET_CLIENT */; 
/*!40101 SET @[email protected]@CHARACTER_SET_RESULTS */; 
/*!40101 SET @[email protected]@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 [email protected]_CHARACTER_SET_CLIENT */; 
/*!40101 SET [email protected]_CHARACTER_SET_RESULTS */; 
/*!40101 SET [email protected]_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** 
+0

我会发现这是一个相当繁琐的答案。将来,我会建议更好的格式:每个文本解释使用不同的代码块。更清晰,在必要时更容易复制/粘贴代码。 – DonBoitnott

0

在笨

插入数据
$query = $this->db->query('YOUR SQL QUERY'); 

$this->db->set('name', $name); 
    $this->db->insert('mytable'); // Produces: INSERT INTO mytable (`name`) VALUES ('{$name}') 

的其他方式希望它可以帮助你。