php 验证mysql保留字_PHP操作MYSQL数据库需避免保留字以免发生错误

做程序员的或者学程序的都晓得 程序员语言都有保留字/保留英文单词,JS或者PHP也是如此,假如你在编写代码的时候使用一些敏感的保留字/保留词将导致程序发生一些莫名其妙的错误。最近笔者在为客户看看呗[kankanbei.com]做二次开发的时候在使用PHP向MYSQL数据库用insert语句添加新数据的时候发生一件莫名其妙的错误,那么这个PHP+MYSQL ERROR如何解决呢?详情如下:

按照项目开发需求,笔者需要开发一个对联广告管理系统,客户要求可以分别设置左侧对联广告和右侧对联广告是否显示。这个功能很简单,开发思路也很明确:我们决定用JS来实现对联部分,而在网站后台里加一个设置功能,把是否显示广告写入MYSQL数据库的某字段,然后页面中使用PHP来读取MYSQL中该字段的值从而输出对应的JS对联代码。

笔者在数据库中创建了一个表,负责存储广告是否显示的字段命名为show,然后就在测试添加广告功能的时候,MYSQL提示SQL语句出错了!

SQL语句为:INSERT INTO kkb_ads (adpic, adlink,  show) VALUES ( 'kkb.jpg', 'http://kankanbei.com', 1)

MYSQL悲催地提示: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 'show) VALUES ( 'kkb.jpg', 'http://kankanbei.com', 1)' at line 1

这句MYSQL ERROR错误提示的英语语句翻译为中文就是:你有一个SQL语法错误,请根据你的MYSQL数据库版本的用户帮助手册来检查你的语法。

实在看不出这句SQL有什么错误,笔者手动在PHPMYADMIN中添加了一条数据,发现其SQL语句会在字段名加上``这种英文符号,而把这种符号去掉就会导致MYSQL报错!

真是百思不得其解,这个错误从未遇到过!最后经过网络搜索笔者发现SHOW是MYSQL的保留字词,不能用于建立表格或者字段中,于是将该字段改名为display,OK 错误就这样解决了!

现将MYSQL中的敏感保留字和词列表发布一下,以免大家出现和我一样的错误,你可以使用CTRL+F在本页查找你想找的MYSQL保留字单词。

在MySQL中,下表中的字显式被保留。看看呗[kankanbei.com]提醒您:其中大多数字进制被标准SQL用作列名和/或表名。少数被保留了,因为MySQL需要它们,(目前)使用yacc解析程序。保留字被引起来后可以用作识别符。

ADD

ALL

ALTER

ANALYZE

AND

AS

ASC

ASENSITIVE

BEFORE

BETWEEN

BIGINT

BINARY

BLOB

BOTH

BY

CALL

CASCADE

CASE

CHANGE

CHAR

CHARACTER

CHECK

COLLATE

COLUMN

CONDITION

CONNECTION

CONSTRAINT

CONTINUE

CONVERT

CREATE

CROSS

CURRENT_DATE

CURRENT_TIME

CURRENT_TIMESTAMP

CURRENT_USER

CURSOR

DATABASE

DATABASES

DAY_HOUR

DAY_MICROSECOND

DAY_MINUTE

DAY_SECOND

DEC

DECIMAL

DECLARE

DEFAULT

DELAYED

DELETE

DESC

DESCRIBE

DETERMINISTIC

DISTINCT

DISTINCTROW

DIV

MYSQL关键保留字词查询表 by 看看呗[kankanbei.com]

DOUBLE

DROP

DUAL

EACH

ELSE

ELSEIF

ENCLOSED

ESCAPED

EXISTS

EXIT

EXPLAIN

FALSE

FETCH

FLOAT

FLOAT4

FLOAT8

FOR

FORCE

FOREIGN

FROM

FULLTEXT

GOTO

GRANT

GROUP

HAVING

HIGH_PRIORITY

HOUR_MICROSECOND

HOUR_MINUTE

HOUR_SECOND

IF

IGNORE

IN

INDEX

INFILE

INNER

INOUT

INSENSITIVE

INSERT

INT

INT1

INT2

INT3

INT4

INT8

INTEGER

INTERVAL

INTO

IS

ITERATE

JOIN

KEY

KEYS

KILL

LABEL

LEADING

LEAVE

LEFT

LIKE

LIMIT

LINEAR

LINES

LOAD

LOCALTIME

LOCALTIMESTAMP

LOCK

LONG

LONGBLOB

LONGTEXT

LOOP

LOW_PRIORITY

MATCH

MEDIUMBLOB

MEDIUMINT

MEDIUMTEXT

MIDDLEINT

MINUTE_MICROSECOND

MINUTE_SECOND

MOD

MODIFIES

NATURAL

NOT

NO_WRITE_TO_BINLOG

NULL

NUMERIC

ON

OPTIMIZE

OPTION

OPTIONALLY

OR

ORDER

OUT

OUTER

OUTFILE

PRECISION

PRIMARY

PROCEDURE

PURGE

RAID0

RANGE

READ

READS

REAL

REFERENCES

REGEXP

RELEASE

RENAME

REPEAT

REPLACE

REQUIRE

RESTRICT

RETURN

REVOKE

RIGHT

RLIKE

SCHEMA

SCHEMAS

SECOND_MICROSECOND

SELECT

SENSITIVE

SEPARATOR

SET

SHOW

SMALLINT

SPATIAL

SPECIFIC

SQL

SQLEXCEPTION

SQLSTATE

SQLWARNING

SQL_BIG_RESULT

SQL_CALC_FOUND_ROWS

SQL_SMALL_RESULT

SSL

STARTING

STRAIGHT_JOIN

TABLE

TERMINATED

THEN

TINYBLOB

TINYINT

TINYTEXT

TO

TRAILING

TRIGGER

TRUE

UNDO

UNION

UNIQUE

UNLOCK

UNSIGNED

UPDATE

USAGE

USE

USING

UTC_DATE

UTC_TIME

UTC_TIMESTAMP

VALUES

VARBINARY

VARCHAR

VARCHARACTER

VARYING

WHEN

WHERE

WHILE

WITH

WRITE

X509

XOR

YEAR_MONTH

ZEROFILL

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值