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を初めて使用し、ロックが予約語であることに気づいていませんでした。そのフィールドの名前を変更したところ、すべてが正常に機能するようになりました。助けてくれたすべての人にクレジットを与えるための最良の方法は何ですか?

4

5 に答える 5

4

lock予約語なのでエスケープする必要があります。

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

そして、マルコの答えが述べているように、挿入する列を定義するよりも、VALUESブラケットに多くのフィールドがあります。エラーはここにあります:

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

前後に別の列名を追加するかtype、値リストから列名を削除する必要があります:subまたはstatus

于 2012-06-20T10:25:00.140 に答える
3
  • 最初の問題:に25のフィールドがINSERT INTOあり、に26のフィールドがありVALUESます。
  • 2番目:すべてのフィールドが'に含まれています:よろしいですか?たとえば、私の頭の中では年は整数である必要がありますが、'で囲みます。
  • 3番目:予約語であるフィールド名があります。MySqlの予約語のリンクを見ることができます
于 2012-06-20T10:25:36.597 に答える
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 に答える
2

カラムリストには25個のアイテムがありますが、値リストには26個のアイテムがあります

必要ないのは値リストのステータスフィールドだと思います

于 2012-06-20T10:26:26.843 に答える
0

たぶんyear、フィールド名がキーワードでもあるからですか?

`year`のようなバックティックを使用してみてください

于 2012-06-20T10:25:17.453 に答える