INSERT查询在mysqli中不起作用

时间:2014-03-20 10:14:17

标签: php mysqli xampp

我有一个名为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。

6 个答案:

答案 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, phonesex,则您的标识必须提供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;对应它们的值,以便查询不会引起任何问题。