0

我有一个像这样创建的数据库表

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

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

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

于 2012-05-17T06:16:28.490 回答
0

您的查询没有问题,但我认为name field is duplicate. 由于您的表结构id-name is primary意味着两行不能具有相同的值idname字段。一次,一个字段值可以相同,但不能两者都相同。并且在您的表中,id字段的值始终0如此,因此如果在字段的任何行值中name重复,它将不会插入该行。并且请id作为主要和自动增量,这样会更好。

谢谢

于 2012-05-17T06:21:34.533 回答