2

我是新来的,所以如果我做错了什么或者应该做一些我不知道的事情,请告诉我!

我的问题:我正在通过 PHP 运行 sql 查询,一切都很好。这是以下查询:

$query = "INSERT INTO products ( name, type, brand, price, discount, dateAdded, categories, status, description, code, weight, insurance, frame, fork, transmission, brakes, isDiscount, isPromo, gender ) VALUES ( '{$name}' , '{$sub}' , '{$status}' , '{$brand}' , '{$price}' , '{$discount}' , NOW() , '{$category}' , '{$status}' , '{$description}' , '{$id}' , '{$weight}' , '{$insurance}' , '{$frame}' , '{$fork}' , '{$transmission}' , '{$brakes}' , '{$is_discount}' , '{$promo}' , '{$gender}' )";

但是现在,我在其中添加了几列,但它停止了工作......有没有人看到我错过了什么?新的查询是:

$query = "INSERT INTO products ( name, type, brand, price, discount, dateAdded, categories, status, description, code, weight, insurance, frame, fork, transmission, brakes, isDiscount, isPromo, gender, frontlight, backlight, stem, seatpost, lock, year ) VALUES ( '{$name}' , '{$sub}' , '{$status}' , '{$brand}' , '{$price}' , '{$discount}' , NOW() , '{$category}' , '{$status}' , '{$description}' , '{$id}' , '{$weight}' , '{$insurance}' , '{$frame}' , '{$fork}' , '{$transmission}' , '{$brakes}' , '{$is_discount}' , '{$promo}' , '{$gender}' , '{$front}' , '{$back}' , '{$stem}' , '{$seat}' , '{$lock}' , '{$year}' )";

这真的很奇怪,因为除了要插入一些额外的列之外,真的没有什么区别!提前致谢!!

编辑:我还不能投票,因为我没有足够的声誉。所以,我想但不能,对不起!从我在 stackoverflow 上看到的情况来看,你们真的很欣赏这些赞成票,我可以理解 :)

编辑:非常感谢大家。我还是 MySQL 的新手,不知道 lock 是保留字。我更改了该字段的名称,现在一切正常。我对所有帮助过的人表示感谢的最佳方式是什么?

4

5 回答 5

4

您必须转义lock,因为它是保留字:

INSERT INTO ... `lock`, year) VALUES (...)

正如 Marco 的回答所述:VALUES 括号中的字段比定义要插入的列多。错误在这里:

INSERT INTO products (name, type, ... ) 
VALUES ( '{$name}' , '{$sub}' , '{$status}', ...)";

您需要在值列表之前或之后添加另一个列名或type从值列表中删除一个:要么substatus

于 2012-06-20T10:25:00.140 回答
3
  • 第一个问题:您有 25 个字段INSERT INTO和 26个字段VALUES
  • 第二:每个字段都包含在':你确定吗?例如 year 在我的脑海中应该是一个整数,但你用 '.
  • 第三:有一些字段名称是保留字。你可以看看MySql 保留字链接
于 2012-06-20T10:25:36.597 回答
2

列列表有 25 项,但值列表有 26

我认为这是不需要的值列表中的状态字段

于 2012-06-20T10:26:26.843 回答
2

您忘记了子字段:

name, 
sub,
type, 
brand, 
price, 
discount, 
dateAdded, 
categories,
status, 
description, 
code, 
weight, 
insurance, 
frame, 
fork, 
transmission, 
brakes, 
isDiscount, 
isPromo, 
gender, 
frontlight, 
backlight, 
stem, 
seatpost, 
lock, 
year

'{$name}' , 
'{$sub}' , 
'{$status}' , 
'{$brand}' , 
'{$price}' , 
'{$discount}' , 
NOW() , 
'{$category}' ,
'{$status}' , 
'{$description}' , 
'{$id}' , 
'{$weight}' , 
'{$insurance}' , 
'{$frame}' , 
'{$fork}' , 
'{$transmission}' , 
'{$brakes}' , 
'{$is_discount}' , 
'{$promo}' , 
'{$gender}' , 
'{$front}' , 
'{$back}' , 
'{$stem}' , 
'{$seat}' , 
'{$lock}' , 
'{$year}'

您的要求将是:

$query = "INSERT INTO products ( name, sub, type, brand, price, discount, dateAdded, categories, status, description, code, weight, insurance, frame, fork, transmission, brakes, isDiscount, isPromo, gender, frontlight, backlight, stem, seatpost, lock, year ) VALUES ( '{$name}' , '{$sub}' , '{$status}' , '{$brand}' , '{$price}' , '{$discount}' , NOW() , '{$category}' , '{$status}' , '{$description}' , '{$id}' , '{$weight}' , '{$insurance}' , '{$frame}' , '{$fork}' , '{$transmission}' , '{$brakes}' , '{$is_discount}' , '{$promo}' , '{$gender}' , '{$front}' , '{$back}' , '{$stem}' , '{$seat}' , '{$lock}' , '{$year}' )";
于 2012-06-20T10:28:18.157 回答
0

也许是因为year作为字段名称也是关键字?

尝试使用像`year`这样的反引号

于 2012-06-20T10:25:17.453 回答