Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/64.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 插入到具有关键字命名列的错误语法中_Php_Mysql_Yii2 - Fatal编程技术网

Php 插入到具有关键字命名列的错误语法中

Php 插入到具有关键字命名列的错误语法中,php,mysql,yii2,Php,Mysql,Yii2,我目前正在用PHP开发一个简单的taskplanner(使用Yii) 我将我的问题提交给 Yii::$app->db->createCommand(...)->execute(); ,因为我需要重新格式化无法使用的日期 $model->save(); 如果我想执行SQL字符串,它会告诉我:“您的SQL语法有错误” 最终生成的SQL字符串如下所示: INSERT INTO 'date_entry' (uid, `from`, `to`, entrydate, type

我目前正在用PHP开发一个简单的taskplanner(使用Yii)

我将我的问题提交给

 Yii::$app->db->createCommand(...)->execute();
,因为我需要重新格式化无法使用的日期

$model->save();
如果我想执行SQL字符串,它会告诉我:“您的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\u条目
是保留字,所以不需要任何包装。

我相信这是由于单引号包装了表名

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\u条目是保留字,所以不需要任何包装。

对于mysql,您应该使用反勾号(`)而不是单引号(')对于表名:

INSERT INTO `date_entry` (uid, `from`, `to`, entrydate, type) 
为保持一致性,还应引用所有字段名


同样如上所述,您可以在保存之前使用设置日期的格式。不过,这应该是另一个问题。

对于mysql,表名应该使用倒勾(`)而不是单引号('):

INSERT INTO `date_entry` (uid, `from`, `to`, entrydate, type) 
为保持一致性,还应引用所有字段名


同样如上所述,您可以在保存之前使用设置日期的格式。不过,这应该是另一个问题。

完整的错误消息是什么?您还可以使用$model->beforeSave()根据需要格式化日期。[Err]1064-您的SQL语法有错误;查看与MySQL服务器版本对应的手册,以了解在“日期”项(uid,
from
to
,entrydate,type)值附近使用的正确语法('62','201'在第1行,我不熟悉Yii,但是您的表名不应该是单引号。如果有的话,它应该是反勾号,但这在这里不是必需的。您应该使用活动记录(日期格式不是问题)我知道我应该这样做,但在我使用的模型规则中,
['from','to','entrydate','date],
我没有让datetime工作。如果我在数据库中保存日期,我会在2016年1月20日收到类似“2020-01-20 16:00:00”的内容。完整的错误消息是什么?您还可以使用$model->beforeSave()根据需要格式化日期。[错误]1064-您的SQL语法有错误;请查看与您的MySQL服务器版本对应的手册,以了解在“日期”条目(uid,
,entrydate,type)值附近使用的正确语法('62','201'在第1行,我不熟悉Yii,但是您的表名不应该是单引号。如果有的话,它应该是反勾号,但这在这里不是必需的。您应该使用活动记录(日期格式不是问题)我知道我应该这样做,但在我使用的模型规则中,
['from','to','entrydate','date],
我没有让datetime工作。如果我将日期保存在数据库中,我会在2016年1月20日收到类似“2020-01-20 16:00:00”的内容。没问题:)@hmichael没问题:)@hmichael