Php 将数据插入表-主键约束
我有一个这样创建的db表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
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的自动增量,这将是有效的