Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/250.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 如何在MySQL中设置年份数据类型_Php_Mysql_Sql_Types_Phpmyadmin - Fatal编程技术网

Php 如何在MySQL中设置年份数据类型

Php 如何在MySQL中设置年份数据类型,php,mysql,sql,types,phpmyadmin,Php,Mysql,Sql,Types,Phpmyadmin,我不明白这个sql语句出了什么问题 INSERT INTO tbl_car_model_year_rate SET car_model_id =4, FROM =2008, TO =2011, with_driver =1, per_day =1000, ten_days =10000, twenty_days =20000, thirty_days =30000, image = '1303166512test.jpg', created_at = NOW( ) , created_by =

我不明白这个sql语句出了什么问题

INSERT INTO tbl_car_model_year_rate
SET car_model_id =4,
FROM =2008,
TO =2011,
with_driver =1,
per_day =1000,
ten_days =10000,
twenty_days =20000,
thirty_days =30000,
image =  '1303166512test.jpg',
created_at = NOW( ) ,
created_by =1
数据类型

car_model_id    int(11) 
image   text        
from    year(4)
to  year(4)
with_driver tinyint(1)          
per_day int(11) 
ten_days    int(11) 
twenty_days int(11)
thirty_days int(11)
created_at datetime 
created_by int(11)
错误信息

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 'from  =2008, to   =2011, with_driver =1, per_day  =1000, ten_days =10000,     twenty' at line 1

您正在使用保留字作为列名

某些词,如选择、删除、, 或BIGINT是保留的,需要 特殊处理,用作 表和列等标识符 名字。这也可能是真实的 内置函数的名称

保留字是允许的 标识符,如果您将其引用为 描述见:

有关保留字的更详细列表,包括版本之间的差异,请参阅


以下是MySQL中正确使用年份字段的示例:


如果您将代码更改为:

INSERT INTO tbl_car_model_year_rate SET car_model_id =4,
`FROM` =2008,
`TO` =2011,
with_driver =1,
per_day =1000,
ten_days =10000,
twenty_days =20000,
thirty_days =30000,
image =  '1303166512test.jpg',
created_at = NOW( ) ,
created_by =1
它会起作用的。 如果在反勾“`”中添加字段和/或表名,则可以使用任何名称

故障原因
FROM
是一个保留字(如
选择*
FROM
表名

使用
FROM
作为列名(
select*FROM FROM FROM=AND
)会混淆MySQL

我的推荐
不要对字段名使用保留字。
将列名从
更改为
YearFrom
StartYear

从<代码>到<代码>到<代码>年到<代码>或<代码>年终<代码>


使用保留字作为列名是很容易混淆的,在所有内容周围添加回号只会使内容难以阅读和难看,同时仍然令人混淆。

to和FROM是保留字,您应该将其放在一个单独的qoute中,如“FROM”、“to”

请记住,在生成表时避免对列使用保留字。有关mysql保留字的完整参考,请参阅下面的链接