查询语法错误

时间:2015-11-15 10:47:18

标签: php sql codeigniter

我正在尝试获取GroupID表的ea_appointments字段,但会出现此错误:

  

错误号码:1064

     

您的SQL语法有错误;查看与您的MySQL服务器版本对应的手册,以便在第1行“as g FROM(ea_appointments)”附近使用正确的语法

     

SELECT COALESCE(MAX(GroupID),0) + 1 as g FROM(ea_appointments

     

行号:330

现在在我的表中我还没有插入任何值,GroupID需要它,因为我希望获得相同的id插入多个约会。

例如有些像这样。 SQL FIDDLE.

现在CodeIgniter我有这段代码:

    $this->db->select('COALESCE(MAX(GroupID), 0) + 1 as g')->from('ea_appointments');
    $query = $this->db->get();
    $groupId = $query->g;

    $appointment['GroupID'] = $groupId;

    if(!$this->db->insert('ea_appointments', $appointment))
    {
        throw new Exception('Error.');
    }

    $insert_id = intval($this->db->insert_id());

但似乎不起作用,我不知道为什么。
注意:此代码由foreach递归调用,在此foreach作为参数传递给变量$appointment,每次包含与同一约会相关联的不同服务。

新代码

   $query = $this->db->query("SELECT COALESCE(MAX(GroupID), 0) +1 AS g FROM ea_appointments");

    $appointment['GroupID'] = $query;

    if(!$this->db->insert('ea_appointments', $appointment))
    {
        throw new Exception('Appuntamento non inserito.');
    }

此查询有效,但当我执行insert()时,我收到此错误:

  

严重程度:4096

     

消息:类CI_DB_mysql_result的对象无法转换为字符串

     

文件名:mysql / mysql_driver.php

     

行号:552

     

错误号码:1064

     

您的SQL语法有错误;检查与MySQL服务器版本对应的手册,以便在第1行的')'附近使用正确的语法

     

INSERT INTO ea_appointmentsid_users_providerstart_datetimeend_datetimenotesis_unavailableid_users_customer,{{1 }},id_servicesbook_datetimehash)VALUES('85','2015-11-15 12:15:00','2015-11-15 12:15: 00','',0,'87','13','2015-11-15 03:12:48','345831a567cdf7c5f71a3a5a12121f2d',)

1 个答案:

答案 0 :(得分:1)

您实际上可以像这样替换您的查询,

$this->db->select('COALESCE(MAX(GroupID), 0) + 1 as g');
$query = $this->db->get('ea_appointments');

修改

$this->db->query("SELECT COALESCE(MAX(GroupID), 0) +1 AS g FROM ea_appointments");