我目前正在使用PHP中的简单任务计划器(使用Yii)。
我用
提交查询 Yii::$app->db->createCommand(...)->execute();
,因为我需要重新格式化我得到的日期,我无法使用
$model->save();
如果我想执行SQL-String,它告诉我:“你的SQL语法有错误”
最终生成的SQL-String如下所示:
INSERT INTO 'date_entry' (uid, `from`, `to`, entrydate, type)
VALUES
('62', '2016-04-17 12:04:00', '2016-04-24 12:04:00', '2016-04-13 10:04:33', '1');
我试图将关键字从和转移到中的“”,[]和``。
如果我通过查询运行它,我会得到同样的错误,到现在为止我感觉很蠢......
希望你能帮助我,谢谢:)
答案 0 :(得分:1)
我相信它是由于包含表名的单引号
INSERT INTO `date_entry` (uid, `from`, `to`, entrydate, type)
VALUES ('62', '2016-04-17 12:04:00', '2016-04-24 12:04:00', '2016-04-13 10:04:33', '1');
单引号用于字符串,反引号/括号/双引号,具体取决于DBMS用于保留字,我认为这是你的意图。虽然我怀疑date_entry
是一个保留字,所以不需要任何包装它。
答案 1 :(得分:1)
对于mysql,您应该使用反引号(`)而不是单引号(')作为表名:
INSERT INTO `date_entry` (uid, `from`, `to`, entrydate, type)
为了保持一致性,您还应引用所有字段名称。
同样如上所述,您可以使用$model->beforeSave()
格式化保存前的日期。不过,这应该是另一个问题。