Php CodeIgniter上的MySql脚本更新

Php CodeIgniter上的MySql脚本更新,php,mysql,codeigniter,sql-update,alter-table,Php,Mysql,Codeigniter,Sql Update,Alter Table,我很难将MySQL查询放入php Codeigniter。我试着搜索,但还没有找到 代码如下: UPDATE `Pelayanan` SET `TGLBAYAR` = INSERT(`TGLBAYAR`, 3, 0, '/'), INSERT(`TGLBAYAR`, 6, 0, '/') UPDATE `Pelayanan` SET `TGLRUBAH` = INSERT(`TGLRUBAH`, 3, 0, '/'), INSERT(`TGLRUBAH`, 6, 0, '/') ALTER TA

我很难将MySQL查询放入php Codeigniter。我试着搜索,但还没有找到

代码如下:

UPDATE `Pelayanan` SET `TGLBAYAR` = INSERT(`TGLBAYAR`, 3, 0, '/'), INSERT(`TGLBAYAR`, 6, 0, '/')
UPDATE `Pelayanan` SET `TGLRUBAH` = INSERT(`TGLRUBAH`, 3, 0, '/'), INSERT(`TGLRUBAH`, 6, 0, '/')
ALTER TABLE `Pelayanan` MODIFY COLUMN (`TGLBAYAR` DATE, `TGLRUBAH` DATE)

UPDATE `Pelayanan` SET `LAMA` = DATEDIFF(`TGLBAYAR`, `TGLRUBAH`)
我想按顺序运行这段代码,但我不知道是使用用例还是其他什么。 controller.php和model.php的代码如何

最重要的是什么

插入(
TGLBAYAR
,3,0'/')),插入(
TGLBAYAR
,6,0'/'))

你能把它改成字符串吗?如果可以,在您的机型上添加此功能,并从控制器调用该功能

 public function update_data(){
     $fields = array(
           'TGLBAYAR' => "INSERT(`TGLBAYAR`, 3, 0, '/'), INSERT(`TGLBAYAR`, 6, 0, '/')",
           'TGLRUBAH' => "INSERT(`TGLRUBAH`, 3, 0, '/'), INSERT(`TGLRUBAH`, 6, 0, '/')"
        );
     $this->db->update('Pelayanan', $fields, array());

     $fields = array(
          'TGLBAYAR' => array(
               'name' => 'TGLBAYAR',
               'type' => 'DATE',
          ),
          'TGLRUBAH' => array(
               'name' => 'TGLRUBAH',
               'type' => 'DATE',
          ),
      );
      $this->db->modify_column('Pelayanan', $fields);

     $fields = array(
           'LAMA' => "DATEDIFF(`TGLBAYAR`, `TGLRUBAH`)"
        );
     $this->db->update('Pelayanan', $fields, array());

 }

alter table部分应如下所示:

$this->load->dbforge();

 $fields = array(
          'TGLBAYAR' => array(
               'name' => 'TGLBAYAR',
               'type' => 'DATE',
          ),
          'TGLRUBAH' => array(
               'name' => 'TGLRUBAH',
               'type' => 'DATE',
          ),
      );
 $this->dbforge->modify_column('Pelayanan', $fields);

此外,如果您有任何错误消息,请与我们共享。

无论您的查询是什么,只要将其放入函数$this->db->query中,它将很容易执行,您可以根据需要正确理解它。我在下面为您的mysql查询提供了一个示例:

$query = $this->db->query(" UPDATE `Pelayanan` SET `TGLBAYAR` = 
INSERT(`TGLBAYAR`, 3, 0, '/'), INSERT(`TGLBAYAR`, 6, 0, '/')
UPDATE `Pelayanan` SET `TGLRUBAH` = INSERT(`TGLRUBAH`, 3, 0, '/'), 
INSERT(`TGLRUBAH`, 6, 0, '/') ALTER TABLE `Pelayanan` MODIFY COLUMN 
(`TGLBAYAR` DATE, `TGLRUBAH` DATE) UPDATE `Pelayanan` SET `LAMA` = 
DATEDIFF(`TGLBAYAR`, `TGLRUBAH`) ");
上述代码将取代
/
TGLBAYAR
TGLRUBAH
列。并期待着改变一个表,你可以使用。这将是最佳实践,在您进入实时部署时将更加灵活

$fields = array(
        'TGLBAYAR' => array(
                'type' => 'DATE',
        ),
        'TGLRUBAH' => array(
                'type' => 'DATE',
        ),
);
$this->dbforge->modify_column('Pelayanan', $fields);
Ref:

然后呢,

$this->db->set('LAMA', "DATEDIFF(`TGLBAYAR`, `TGLRUBAH`)", FALSE);
$this->db->update('Pelayanan');

请尝试此代码,如果出现任何错误,请告诉我。愉快的编码。

TGLBAYAR已经在字符串中,我已经运行了此代码,但仍然出现错误:“调用未定义的方法CI\u DB\u mysqli\u driver::modify\u column()”@user1213您使用的是什么CI版本?试着参考一下这个,谢谢。我使用CodeIgniter3.0.0。我想我应该迁移数据库来修复这个错误。我能看看你的控制器@user1213吗?你能再多描述一点吗?这些是有效的查询吗?如果直接在MySQL数据库中运行这些查询,是否会出现任何错误?
$this->db->set('LAMA', "DATEDIFF(`TGLBAYAR`, `TGLRUBAH`)", FALSE);
$this->db->update('Pelayanan');