将日期插入数据库时​​出现 SQL 语法错误(框架:codeigniter)

Posted

技术标签:

【中文标题】将日期插入数据库时​​出现 SQL 语法错误(框架:codeigniter)【英文标题】:SQL syntax error when inserting date into database (framework: codeigniter) 【发布时间】:2014-07-11 03:14:22 【问题描述】:

我正在尝试在我的 mysql 数据库中插入一个日期,但我收到一个 SQL 语法错误,这是我的代码(关于日期):

$h = "2";
$hm = $h * 60; 
$ms = $hm * 60;
$data['date'] = gmdate("Y-m-d g:i:s", time()+($ms));
$thismoment = $data['date'];

$this->db->query('INSERT INTO gotcha_user_task (gotcha_user_id, task_id, target_gotcha_user_id, date) 
VALUES ('.$gotchauserid.','.$notactivetask.','.$randleasttargetedvalue.','.$thismoment.') ');

这是我的错误:

Error Number: 1064
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '9:31:50)' at line 2
INSERT INTO gotcha_user_task (gotcha_user_id, task_id, target_gotcha_user_id, date) VALUES (6,4,7,2014-05-22 9:31:50)

我已经使用 phpMyAdmin 手动添加了两行,因此我知道日期应该按此顺序排列YYYY-MM-DD HH-MM-SS(至少它们在表中的排列方式),因此我已经尝试过(因为我已经读过它作为其他人的解决方案)并没有帮助我(还)。我还尝试了使用 ` 的“解决方案”,因为第一部分和第二部分之间有一个空格,对我也没有帮助。

这是我的第一个“更大”的项目(它仍然很小 ^^),所以它可能是任何东西,因为我写的几乎所有东西都是我在这个项目工作时学到的东西。

【问题讨论】:

尝试在$thismoment周围添加引号 【参考方案1】:

您的查询必须是这样的:

$this->db->query('INSERT INTO 
      gotcha_user_task (gotcha_user_id, task_id, target_gotcha_user_id, date) 
VALUES ('.$gotchauserid.','.$notactivetask.','.$randleasttargetedvalue.',"'.$thismoment.'") ');

2014-05-22 9:31:50这个值应该在配额标记中。这就是它给出错误的原因。

【讨论】:

不公平,但谢谢,我以为我已经尝试过了,但显然我做了其他事情。【参考方案2】:

你需要在$thismoment周围加上引号 试试这个:

$this->db->query('INSERT INTO gotcha_user_task (gotcha_user_id, task_id, target_gotcha_user_id, date) 
VALUES ('.$gotchauserid.','.$notactivetask.','.$randleasttargetedvalue.',"'.$thismoment.'") ');

【讨论】:

以上是关于将日期插入数据库时​​出现 SQL 语法错误(框架:codeigniter)的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 dateTimePicker 将日期插入 SQL 数据库日期列?

excel的单元格为空 日期型 插入到SQL数据库 为啥会出现默认时间1900-1-2

将日期和时间插入数据库的 SQL 语法

如何以某种格式将日期和时间插入 SQL Server 数据库? [复制]

我曾尝试使用带有条目小部件的 tkinter 将记录插入到 sql 表中,但出现 sql 语法错误

SQLite插入 - 如何使用参数化值避免语法错误时插入任何文本