【问题标题】:Codeigniter Multi Insert QueryCodeigniter 多插入查询
【发布时间】:2015-01-23 01:17:32
【问题描述】:

我找不到任何合适的示例如何在 codeigniter 中执行多个插入查询。我已经尝试在模型中创建一个函数,包含超过 1 个插入查询。我得到的总是首先查询成功,而其他的则根本没有执行。

我已经尝试过使用事务:$this->db->trans_start(); 在我下面的例子中: $db->trans_start();当然 $db->trans_complete();

但这并没有帮助。始终只执行第一个插入查询。我应该怎么做才能在一个函数中执行所有插入/更新/删除查询?

例子:

<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
class Deposit_model extends CI_Model
{
     function __construct()
     {
          // Call the Model constructor
          parent::__construct();

     }




     public function inputdeh() 
     {
            $this->load->helper('url');
            $CI =& get_instance();
            $db = $CI->load->database( 'local', TRUE );

            $id_member = $this->input->post('id_member');
            $jumlah = $this->input->post('jumlah');
            $ket1 = $this->input->post('ket');
            $ket = 'WEB/'.$ket1;


        $saldoawal = $db->query("select saldo from member where id_member='$id_member'");
        $saldoawa['saldo'] = $saldoawal->row('saldo');
        $saldoaw = $saldoawa['saldo']; 

        $saldoak = $saldoaw + $jumlah; 
        //$_POST[jumlah]=number_format($_POST['jumlah'],".");
        //$saldoak = number_format($saldoak);
        //$dep = number_format(floatval($jumlah));

        $result = $db->query("select nama from member where id_member='$id_member'");
        $namar['nama'] = $result->row('nama');
        $nama = $namar['nama'];

        $resulthp = $db->query("select hp from member_hp where id_member='$id_member' LIMIT 1 OFFSET 0");
        $hpr['hp'] = $resulthp->row('hp');
        $nohp = $hpr['hp'];

        //$now = 'NOW()';
        $user = 'adminweb';


        $data = array(
        'id_member' => $this->input->post('id_member'),
        'nama' => $nama,
        'jml' => $this->input->post('jumlah'),
        'saldo_awal' => $saldoaw,
        'saldo_akhir' => $saldoak,
        'kode_trx' => '1',
        'status' => '1',
        'ket' => $ket,
        'user_input' => $user,
        );
        $db->set('tgl_transaksi', 'NOW()', FALSE);
        $db->set('tgl_input', 'NOW()', FALSE);

        return $db->insert('transaksi', $data);

        $logsaldodata = array(
        'id_member' => $this->input->post('id_member'),
        'saldo' => $saldoaw,
        'act' => $this->input->post('jumlah'),
        'ket' => 'Deposit Tambah~True#',
        );
        $db->set('tgl', 'NOW()', FALSE);
        $db->set('ref', 'last_insert_id()', FALSE);
        return $db->insert('log_saldo', $logsaldodata);
}
}

【问题讨论】:

    标签: php mysql codeigniter


    【解决方案1】:

    当然,您在执行其余代码之前就返回了!

    $db->set('tgl_input', 'NOW()', FALSE);
    return $db->insert('transaksi', $data); // <-- remove the keyword here
    $logsaldodata = array(
    

    删除中间的return 语句,留下$db-&gt;insert('transaksi', $data)。 return 停止函数并返回结果,其余的函数代码不会被执行。

    【讨论】:

    • 非常感谢 Damien Pirsy,在 T.T. SOLVED 之前我没有注意到这一点!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-12
    相关资源
    最近更新 更多