将数据插入表 - 主键约束

时间:2012-05-17 06:06:06

标签: php mysql

我有一个像这样创建的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);

然后根本没有插入。

2 个答案:

答案 0 :(得分:1)

您需要在create table语法中的id字段上设置auto_increment。您可以编辑列以添加它。

此外,如果$ quan无效,您的SQL语法将给您一个错误。在它周围加上引号:VALUES('%s','%d','%s')

答案 1 :(得分:0)

您的查询没有问题,但我认为name field is duplicate的价值。由于您的表格结构id-name is primary表示两行不能同时包含idname字段的值。一次一个字段值可以相同但不是两者都不相同。在您的表中,id字段的值始终为0,因此如果在name字段的任何行值中重复,则不会插入该行。请将id作为主要和自动增量,以便更好。

谢谢