【问题标题】:How to insert multiple column in codeigniter?如何在codeigniter中插入多列?
【发布时间】:2012-11-14 00:23:45
【问题描述】:

我想将 2 列插入数据库 [artikel & pengarang],当我保存该表单时,它将插入 $data from 到表 artikel 和 $data 到表 pengarang [IDArtikel from Artikel &nama_pengarang]。

这是我的文章 SQL:

CREATE TABLE `artikel`(
`IDArtikel` INT(11)NOT NULL AUTO_INCREMENT,
`IDJurnal` INT(11)NOT NULL,
`IDKategori` INT(11)NOT NULL,
`judul` VARCHAR(255)NOT NULL,
`abstract` text NOT NULL,
`nama_file` VARCHAR(255)NOT NULL,
`dilihat` INT(50)NOT NULL,
`didownload` INT(50)NOT NULL,
`created_time` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
`created_by` VARCHAR(255)NOT NULL,
`updated_time` datetime NOT NULL,
`updated_by` VARCHAR(255)NOT NULL,
PRIMARY KEY(`IDArtikel`))ENGINE = INNODB DEFAULT CHARSET = utf8;

这是 Pengarang SQL:

CREATE TABLE `pengarang`(
`IDPengarang` INT(11)NOT NULL AUTO_INCREMENT,
`IDArtikel` INT(11)NOT NULL,
`nama_pengarang` VARCHAR(255)NOT NULL,
PRIMARY KEY(`IDPengarang`))ENGINE = INNODB DEFAULT CHARSET = utf8;

这是我的看法:

<h3><?= $title; ?></h3><?php echo form_open("admin/artikel/buat/"); ?>
<table width="95%">
    <tr>
        <td><b>Pilih Referensi Jurnal</b></td>
        <td>
            <input type="hidden" name="IDJurnal" id="IDJurnal" value="<?php echo $IDJurnal; ?>" />
            <input type="text" name="volume" id="volume" value="<?php echo $volume; ?>" readonly="readonly"  class="sedang" />
        <?php echo anchor_popup('admin/artikel/popup', 'Referensi Jurnal', array('class' => 'button')); ?>
    </td>
</tr>
<tr>
    <td><b>Kategori</b></td>
    <td>
        <?php
            echo form_dropdown('IDKategori', $kategori) . "";
        ?>
        </td>
    </tr>
    <tr>
        <td width="125"><strong>Judul</strong></td>
        <td><input type="text" name="judul" class="panjang"></td>
    </tr>
    <tr>
        <td width="125"><strong>Pengarang</strong></td>
        <td>
            <input type="text" name="pengarang" class="panjang">
        </td>
    </tr>
    <tr>
        <td><b>Abstract</b></td>
        <td>
        <?php
            $data = array('name' => 'abstract');
            echo $this->ckeditor->editor($data['name']);
        ?>
        </td>
    </tr>
    <tr>
        <td></td>
        <td>
            <input type="submit" class="button" value="Simpan">
            <input type="button" class="button" value="Batal" onClick="javascript: history.go(-1)" />
        </td>
    </tr>
<?php
            echo form_close();
?>

这是我的控制器:

function buat() {
    if ($this->input->post('judul')) {
        $this->MArtikel->addArtikel();
        $this->session->set_flashdata('message', 'Artikel telah di buat !');
        redirect('admin/artikel/index', 'refresh');
    } else {
        // konfigurasi ckfinder dengan ckeditor
        $this->load->library('ckeditor');
        $this->load->library('ckfinder');
        $this->ckeditor->basePath = base_url() . 'asset/ckeditor/';
        $this->ckeditor->config['toolbar'] = 'Full';
        $this->ckeditor->config['language'] = 'en';
        $this->ckfinder->SetupCKEditor($this->ckeditor, '../../../asset/ckfinder/');

        $data['title'] = "Tambah Artikel";
        $data['main'] = 'admin/artikel/artikel_buat';
        $data['jurnal'] = $this->MJurnal->getJurnalDropDown();
        $data['kategori'] = $this->MKategori->getKategoriDropDown();
        $this->load->vars($data);
        $this->load->view('dashboard/template');
    }
}

这是我的模特

function addArtikel() {
    $now = date("Y-m-d H:i:s");
    $data = array(
        'IDJurnal' => $this->input->post('IDJurnal'),
        'IDKategori' => $this->input->post('IDKategori'),
        'judul' => $this->input->post('judul'),
        'abstract' => $this->input->post('abstract'),
        'created_time' => $now,
        'created_by' => $_SESSION['username']
    );

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

pengarang表格,可以插入多条数据

【问题讨论】:

  • 它不工作。告诉我们问题出在哪里
  • 你可以使用 $this->db->insert_batch($array);看看这里:ellislab.com/codeigniter/user-guide/database/…
  • codeigniter 在一个函数中插入多个表
  • 当我使用 $this->db->insert_batch($array);它只会更新我数据库中的 1 个表
  • 为什么不为 pengarang 创建一个模型,添加 addArtickle 方法,然后在控制器中调用它?

标签: php mysql codeigniter html-table create-table


【解决方案1】:

在模型addPengarang 中创建新函数在您的模型中添加以下代码,并根据您的要求更改数据数组的值,它将在 Pengarng 表中插入值

function addPengarang() { 
   $data = array(
        'IDPengarang' => 'value for IDPegarang',
        'IDArtikel' => 10,
        'nama_pengarang' => 'value for nama pengarang'
    );

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

【讨论】:

    【解决方案2】:

    【讨论】:

    • 我们可以使用 $this->db->insert_batch('mytable1','mytable2' $data); ??
    • 没有。你可以使用 $this->db->insert_batch('mytable1', array $data1) 然后 $this->insert_batch('mytable2', array $data2)
    • 在我的模型中会是什么样子 $data1 = array( ); $data2 = 数组(); $this->db->insert_batch('artikel', $data1); $this->db->insert_batch('pengarang', $data1);
    • 是 where $data1 = array(array('field1' => 'value1', 'field2' => 'value2'), array('field1' => 'value1', 'field2' => 'value2'));该方法将从 $data1 中获取每个数组,并生成一个 $this->db->insert()
    猜你喜欢
    • 2016-04-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-20
    • 1970-01-01
    • 2021-03-06
    • 2016-02-20
    相关资源
    最近更新 更多