0

このように作成されたdbテーブルがあります

CREATE TABLE products(id INT,   
                      name varchar(32),   
                      PRIMARY KEY(id,name),   
                      quantity int,   
                      avail varchar(5) );

コマンドプロンプトで次のコマンドを使用すると、値が正しく挿入されます。

INSERT INTO products(name,quantity,avail) VALUES('stuffed bear doll',100,'OF_ST');

IDは重複していますが

でもこのような関数の中に置いておくと

$query=sprintf("INSERT INTO products(name,quantity,avail) VALUES('%s',%d,'%s');",
                   $name,
                   $quan,
                   $avail);

mysql_query($query);

その後、挿入はまったく行われません。

4

2 に答える 2

1

createtable構文のidフィールドにauto_incrementを設定する必要がありました。列を編集して追加できます。

また、$ quanが有効でない場合、SQL構文でエラーが発生します。その周りに引用符を付けます:VALUES('%s','%d','%s')

于 2012-05-17T06:16:28.490 に答える
0

あなたのクエリには問題はありませんが、私はの値だと思いますname field is duplicate。テーブル構造は、2つの行がとフィールドid-name is primaryの両方の同じ値を持つことはできないことを意味します。1回限り、1つのフィールド値を同じにすることはできますが、両方を使用することはできません。そして、ここでフィールドの値は常にテーブルにあるので、フィールドのいずれかの行の値が繰り返されても、その行は挿入されません。そして、それがより良くなるように、プライマリと自動インクリメントとして作成してください。idnameid0nameid

ありがとう

于 2012-05-17T06:21:34.533 に答える