Php 将数据插入表-主键约束

Php 将数据插入表-主键约束,php,mysql,Php,Mysql,我有一个这样创建的db表 CREATE TABLE products(id INT,   name varchar(32),   PRIMARY KEY(id,name),   quantity int, avail varchar(5) ); $query=sprintf("INSERT INTO prod

我有一个这样创建的db表

CREATE TABLE products(id INT,   
                      name varchar(32),   
                      PRIMARY KEY(id,name),   
                      quantity int,   
                      avail varchar(5) );
$query=sprintf("INSERT INTO products(name,quantity,avail) VALUES('%s',%d,'%s');",
                   $name,
                   $quan,
                   $avail);

mysql_query($query);
如果在命令提示下使用以下命令,则会正确插入值:

INSERT INTO products(name,quantity,avail) VALUES('stuffed bear doll',100,'OF_ST');
虽然id是重复的

但是当我把它放在函数中,像这样

CREATE TABLE products(id INT,   
                      name varchar(32),   
                      PRIMARY KEY(id,name),   
                      quantity int,   
                      avail varchar(5) );
$query=sprintf("INSERT INTO products(name,quantity,avail) VALUES('%s',%d,'%s');",
                   $name,
                   $quan,
                   $avail);

mysql_query($query);

然后根本就没有插入操作。

您需要在创建表语法中的id字段上设置自动增量。您可以编辑列以添加它


另外,如果$quan无效,您的SQL语法将给您一个错误。在其周围加引号:
值(“%s”、“d”、“s”)
您的查询没有问题,但我认为
名称字段的值是重复的。由于您的表结构
id name是primary
意味着两行不能同时具有
id
name
字段的相同值。一次一个字段值可以相同,但不能同时用于两个字段。在您的表中,
id
字段的值始终是
0
,因此如果在
name
字段的任何行中重复该值,则不会插入该行。请将
id
设置为主要和自动增量,这样会更好


感谢echo mysql_error()了解错误
mysql_query($query)或die(mysql_error())并告诉我们您得到了什么。确保自动递增id
:重复输入键“PRIMARY”的“0-somename”
检查Cold的响应。主键应该是自动递增的。我认为他的查询唯一的问题是id字段不是自动递增的。@逼真度:您好,是因为当name字段的值为repeat时,id不是自动递增的。它不接受输入,因为id和name的组合是主要的。若我们保持名称值不同,那个么它将接受输入或添加id的自动增量,这将是有效的