我正在尝试获取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_appointments
(id_users_provider
,start_datetime
,end_datetime
,notes
,is_unavailable
,id_users_customer
,{{1 }},id_services
,book_datetime
,hash
)VALUES('85','2015-11-15 12:15:00','2015-11-15 12:15: 00','',0,'87','13','2015-11-15 03:12:48','345831a567cdf7c5f71a3a5a12121f2d',)
答案 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");