我目前正在用PHP(使用Yii)开发一个简单的任务规划器。
我向提交我的查询
Yii::$app->db->createCommand(...)->execute();
,因为我需要重新格式化我得到的日期,所以我不能使用
$model->save();
如果我想执行SQL-String,它会告诉我:"您的SQL语法有错误"
最终生成的SQL字符串如下所示:
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');
我试图将"、[]和``中的关键字从和转义为。
如果我通过查询运行它,我会得到同样的错误,现在我觉得很愚蠢。。。
希望你能帮助我,谢谢:)
我相信这是由于表名的单引号
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
是一个保留字,所以不需要任何包装。
对于mysql,应该使用backticks(`)而不是单引号(')作为表名:
INSERT INTO `date_entry` (uid, `from`, `to`, entrydate, type)
为了保持一致性,您还应该引用所有字段名称。
同样如前所述,您可以在保存之前使用$model->beforeSave()
格式化日期。不过,这应该是另一个问题。