语法错误问题mysql_query和php

时间:2021-03-03 23:02:39

I'm having trouble with a mysql query in php the query is

我在查询的php中遇到mysql查询时遇到问题

INSERT INTO rfqtable (rfqnumber, prnumber, linenumber, shipmentnumber, item, desc, needbydate, uom, rfqqty, quotedqty, unitprice, amountprice, lt, substitute, remark, coc, tds, exportlicense, maker, quotedmaker, substituteinfo, validuntil, warranty, program, packingtype, attachment)VALUES('63915', '86298', '1', '1', '229-027477', 'WASHER, SEALING', 'AUG-26-2011', 'Each', '50', '0', '0', '0', '0', '', '', 'N', 'N', '', '', '', '', '0', '0', 'KFP', '', '')

And the mysql error is:

并且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 'desc, needbydate, uom, rfqqty, quotedqty, unitprice, amountprice, lt, substitute' at line 1

They are all varchar 255 fields, utf-8 general

它们都是varchar 255字段,utf-8一般

Any help would be greatly appreciated

任何帮助将不胜感激

5 个解决方案

#1


6  

DESC is a MySQL's reserved word. If you want to use it as column name, you need to put it in backticks (``)

DESC是MySQL的保留字。如果你想将它用作列名,你需要把它放在反引号中(``)

INSERT INTO rfqtable (
  rfqnumber, prnumber, linenumber, shipmentnumber, item, `desc`,
  needbydate, uom, rfqqty, quotedqty, unitprice, amountprice, lt,
  substitute, remark, coc, tds, exportlicense, maker, quotedmaker, 
  substituteinfo, validuntil, warranty, program, packingtype, attachment
) VALUES (
  '63915', '86298', '1', '1', '229-027477', 'WASHER, SEALING',
  'AUG-26-2011', 'Each', '50', '0', '0', '0', '0', '', '', 'N',
  'N', '', '', '', '', '0', '0', 'KFP', '', '')

Also: please, for your own sake, use correct datatypes. Storing dates and numbers as VARCHARs is probably the worst thing you can do. http://dev.mysql.com/doc/refman/5.5/en/data-types.html

另外:请您使用正确的数据类型。将日期和数字存储为VARCHAR可能是您可以做的最糟糕的事情。 http://dev.mysql.com/doc/refman/5.5/en/data-types.html

#2


0  

DESC is a reserved word!

DESC是一个保留字!

#3


0  

DESC is a "reserved" word and part of SQL.

DESC是一个“保留”字,是SQL的一部分。

You should quote all your fields with backticks, like:

您应该使用反引号引用所有字段,例如:

INSERT INTO `rfqtable` (`rfqnumber`, `prnumber`, `linenumber`, …

INSERT INTO`rfqtable`(`rfqnumber`,`prnumber`,`linenumber`,...

#4


0  

try this

尝试这个

INSERT INTO rfqtable (rfqnumber, prnumber, linenumber, shipmentnumber, item, `desc`, needbydate, uom, rfqqty, quotedqty, unitprice, amountprice, lt, substitute, remark, coc, tds, exportlicense, maker, quotedmaker, substituteinfo, validuntil, warranty, program, packingtype, attachment)VALUES('63915', '86298', '1', '1', '229-027477', 'WASHER, SEALING', 'AUG-26-2011', 'Each', '50', '0', '0', '0', '0', '', '', 'N', 'N', '', '', '', '', '0', '0', 'KFP', '', '')

DESC is reserved by mysql

DESC由mysql保留

whole list:

整个清单:

ACCESSIBLE  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   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
DOUBLE  DROP    DUAL
EACH    ELSE    ELSEIF
ENCLOSED    ESCAPED EXISTS
EXIT    EXPLAIN FALSE
FETCH   FLOAT   FLOAT4
FLOAT8  FOR FORCE
FOREIGN FROM    FULLTEXT
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    LEADING LEAVE
LEFT    LIKE    LIMIT
LINEAR  LINES   LOAD
LOCALTIME   LOCALTIMESTAMP  LOCK
LONG    LONGBLOB    LONGTEXT
LOOP    LOW_PRIORITY    MASTER_SSL_VERIFY_SERVER_CERT
MATCH   MAXVALUE    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   RANGE   READ
READS   READ_WRITE  REAL
REFERENCES  REGEXP  RELEASE
RENAME  REPEAT  REPLACE
REQUIRE RESIGNAL    RESTRICT
RETURN  REVOKE  RIGHT
RLIKE   SCHEMA  SCHEMAS
SECOND_MICROSECOND  SELECT  SENSITIVE
SEPARATOR   SET SHOW
SIGNAL  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   XOR YEAR_MONTH
ZEROFILL         

source

资源

#5


0  

"DESC" is a reserved word for "descending" order. Add back tics to it

“DESC”是“降序”的保留字。添加背胶

`desc`

`desc`

#1


6  

DESC is a MySQL's reserved word. If you want to use it as column name, you need to put it in backticks (``)

DESC是MySQL的保留字。如果你想将它用作列名,你需要把它放在反引号中(``)

INSERT INTO rfqtable (
  rfqnumber, prnumber, linenumber, shipmentnumber, item, `desc`,
  needbydate, uom, rfqqty, quotedqty, unitprice, amountprice, lt,
  substitute, remark, coc, tds, exportlicense, maker, quotedmaker, 
  substituteinfo, validuntil, warranty, program, packingtype, attachment
) VALUES (
  '63915', '86298', '1', '1', '229-027477', 'WASHER, SEALING',
  'AUG-26-2011', 'Each', '50', '0', '0', '0', '0', '', '', 'N',
  'N', '', '', '', '', '0', '0', 'KFP', '', '')

Also: please, for your own sake, use correct datatypes. Storing dates and numbers as VARCHARs is probably the worst thing you can do. http://dev.mysql.com/doc/refman/5.5/en/data-types.html

另外:请您使用正确的数据类型。将日期和数字存储为VARCHAR可能是您可以做的最糟糕的事情。 http://dev.mysql.com/doc/refman/5.5/en/data-types.html

#2


0  

DESC is a reserved word!

DESC是一个保留字!

#3


0  

DESC is a "reserved" word and part of SQL.

DESC是一个“保留”字,是SQL的一部分。

You should quote all your fields with backticks, like:

您应该使用反引号引用所有字段,例如:

INSERT INTO `rfqtable` (`rfqnumber`, `prnumber`, `linenumber`, …

INSERT INTO`rfqtable`(`rfqnumber`,`prnumber`,`linenumber`,...

#4


0  

try this

尝试这个

INSERT INTO rfqtable (rfqnumber, prnumber, linenumber, shipmentnumber, item, `desc`, needbydate, uom, rfqqty, quotedqty, unitprice, amountprice, lt, substitute, remark, coc, tds, exportlicense, maker, quotedmaker, substituteinfo, validuntil, warranty, program, packingtype, attachment)VALUES('63915', '86298', '1', '1', '229-027477', 'WASHER, SEALING', 'AUG-26-2011', 'Each', '50', '0', '0', '0', '0', '', '', 'N', 'N', '', '', '', '', '0', '0', 'KFP', '', '')

DESC is reserved by mysql

DESC由mysql保留

whole list:

整个清单:

ACCESSIBLE  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   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
DOUBLE  DROP    DUAL
EACH    ELSE    ELSEIF
ENCLOSED    ESCAPED EXISTS
EXIT    EXPLAIN FALSE
FETCH   FLOAT   FLOAT4
FLOAT8  FOR FORCE
FOREIGN FROM    FULLTEXT
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    LEADING LEAVE
LEFT    LIKE    LIMIT
LINEAR  LINES   LOAD
LOCALTIME   LOCALTIMESTAMP  LOCK
LONG    LONGBLOB    LONGTEXT
LOOP    LOW_PRIORITY    MASTER_SSL_VERIFY_SERVER_CERT
MATCH   MAXVALUE    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   RANGE   READ
READS   READ_WRITE  REAL
REFERENCES  REGEXP  RELEASE
RENAME  REPEAT  REPLACE
REQUIRE RESIGNAL    RESTRICT
RETURN  REVOKE  RIGHT
RLIKE   SCHEMA  SCHEMAS
SECOND_MICROSECOND  SELECT  SENSITIVE
SEPARATOR   SET SHOW
SIGNAL  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   XOR YEAR_MONTH
ZEROFILL         

source

资源

#5


0  

"DESC" is a reserved word for "descending" order. Add back tics to it

“DESC”是“降序”的保留字。添加背胶

`desc`

`desc`