我有一个名为user_data
的表,其中包含5行 - id(primary key),name,address,phone,sex
。当我尝试通过此查询将值插入表中时
mysqli_query($con,"INSERT INTO user_data VALUES ('Peter_malik', 'Griffin door',35897,'male')");
它不起作用。但是当我尝试这个时,它可以工作。
mysqli_query($con,"INSERT INTO user_data (name,address,phone,sex) VALUES ('Peter_Gregory', 'Griffin door',35897,'male')");
我不明白这背后的真正问题是什么。我使用的是PHP 5.4.7和XAMPP 1.8.1。
答案 0 :(得分:2)
而不是:
mysqli_query($con,"INSERT INTO user_data VALUES ('Peter_malik', 'Griffin door',35897,'male')");
当字段设置为NOT NULL
mysqli_query($con,"INSERT INTO user_data VALUES (NULL, 'Peter_malik', 'Griffin door',35897,'male')");
或者在字段设置为NULL
mysqli_query($con,"INSERT INTO user_data VALUES (0, 'Peter_malik', 'Griffin door',35897,'male')")
请参阅mysql手册:http://dev.mysql.com/doc/refman/5.0/en/example-auto-increment.html
答案 1 :(得分:1)
它不会在第一个查询中插入,因为它假定第一个值,即' Peter_malik'是你的主键,它失败了。
在查询中指定列名时,它知道哪个列是哪个值。
我在第一种情况下添加,即
'Peter_malik', 'Griffin door',35897,'male'
将参考
id(pk),name,address,phone
所以你需要将第一个值作为NULL
传递,以便id自动递增。所以第一个查询应该是
VALUES (NULL, 'Peter_malik', 'Griffin door',35897,'male')
答案 2 :(得分:1)
如果您的表格有5列id, name, address, phone
和sex
,则您的标识必须提供5个值,每列一个。由于您的stament只提供了4个值,因此您需要一个列列表来告诉MySQL您提供的值。
如果您的id列是auto_increment列,则可以在您的values子句中提供null
。
所以你必须说:
INSERT INTO user_data VALUES (NULL, 'Peter_malik', 'Griffin door',35897,'male');
OR
INSERT INTO user_data (name,address,phone,sex) VALUES
('Peter_malik', 'Griffin door',35897,'male')
答案 3 :(得分:1)
您需要在insert语句中包含id列:
mysqli_query($con,"INSERT INTO user_data VALUES (null, 'Peter_malik', 'Griffin door',35897,'male')");
,前提是您的id字段设置为autoincrement! ;)
答案 4 :(得分:0)
如果您在第一个查询中也提供了ID,它将正常运行。 假设id = 1
mysqli_query($con,"INSERT INTO user_data VALUES (1,'Peter_malik', 'Griffin door',35897,'male')");
正如其他人所说,当您未在查询中明确提及您的列名时,您必须提供所有值。
答案 5 :(得分:0)
当您尝试以下查询时...
mysqli_query($con,"INSERT INTO user_data VALUES ('Peter_malik', 'Griffin door',35897,'male')");
在此查询中,您只在表中插入4个值,但该表有5个字段,因此它会导致问题,因为在上面的查询中,值是插入表格第一个字段&由于此查询导致问题,数据库中的序列或数据类型不匹配。
如果你想要插入wuthout指定字段,那么你可以使用以下查询......
mysqli_query($con,"INSERT INTO user_data VALUES (0,'Peter_malik', 'Griffin door',35897,'male')");<br><br>
它会正常工作。
在您的第二个查询中,您还指定了字段名称&amp;对应它们的值,以便查询不会引起任何问题。