INSERT INTO只运行一次?

时间:2014-04-12 22:09:11

标签: php

这是我的代码:

$con=mysqli_connect("localhost","name","pass","bird") ;
$result = mysqli_query($con,"SELECT * FROM bird");
mysqli_query($con,"INSERT INTO 'bird' (`id`, `name`, `latin`, `number`) values (0,'d','cwer','73')");

第一次,我可以看到这些值已被添加,但是当我重新加载时,它还没有再做了,它应该是这样吗?
因此,如果我每次重新加载时都希望它运行,我该怎么做?

2 个答案:

答案 0 :(得分:5)

您可能对id列(或该查询中的其他列)有唯一约束,当您尝试使用相同的ID添加第二行时,它会被MySQL拒绝。

您应该在代码中进行错误检查。您应该检查插件会影响多少行(使用mysqli_affected_rows()),如果数字为零,则从MySQL获取错误消息(使用mysqli_error())。

$result = mysqli_query($con,"INSERT INTO 'bird' (`id`, `name`, `latin`, `number`) values (0,'d','cwer','73')");
if (mysqli_affected_rows() === 0) {
    echo mysqli_error($con);
}

@ DaveChen上面的评论是解决您(潜在)问题的好方法。如果还没有,请创建idauto increment,然后将其从查询中删除。

mysqli_query($con,"INSERT INTO 'bird' (`name`, `latin`, `number`) values ('d','cwer','73')");

答案 1 :(得分:0)

如果您的ID列是自动增量且唯一的:将代码更改为:

$con=mysqli_connect("localhost","name","pass","bird") ;
$result = mysqli_query($con,"SELECT * FROM bird");
mysqli_query($con,"INSERT INTO 'bird' (`id`, `name`, `latin`, `number`) values ('','d','cwer','73')");