自动增量在PHP忽略方法中不起作用

自动增量在PHP忽略方法中不起作用,php,mysql,Php,Mysql,我使用PHP ignore方法将数据插入MySQL,如下所示: if (count($_POST['tags']) > 0) { $tags = explode(',', $_POST['tags']); $quoted_tags = array_map( function ($x) { return "'$x'"; }, $tags); $string = implode(',

我使用PHP ignore方法将数据插入MySQL,如下所示:

if (count($_POST['tags']) > 0)
{
    $tags = explode(',', $_POST['tags']);
    $quoted_tags = array_map(
        function ($x)
        {
            return "'$x'";
        },
        $tags);
    $string = implode(',', $quoted_tags);
    SQL::ACTION("DELETE FROM " . NEWS_TAGS . " WHERE article = ? AND name NOT IN (" . $string . ") ", $id);
    $arr_tag = explode(",", $_POST['tags']);
    foreach($arr_tag as $tag)
    {
        $id = $_GET['id'];
        SQL::ACTION("INSERT IGNORE INTO " . NEWS_TAGS . " (article, name, type) VALUES (?, ?, ?)", $id, $tag, "news");
    }
}
这是可行的,但在MySQL表中,每个自动增量id之间是4,如下所示:

如何解决此问题

ALTER TABLE tbl AUTO_INCREMENT = 1;

在php myadmin中,运行此sql语句,其中“tbl”是表名

您需要更改表并将
自动增量
设置为1,其次,如果尚未设置id列作为主键


看起来您的一些插入失败了。正因为如此,您的“自动递增”字段仍然递增,但未插入新记录。您为什么认为这是一个问题?autoincrement保证一个
唯一的
Id值,而不是
连续的
Id值。什么是
SQL::ACTION
,为什么不查询?您不能在不创建的情况下将任意用户数据放入查询中。您还可以使用MAX()函数(如果您认为在这种情况下有用),如@tadman所述。看起来他的包装器确实使用了准备好的查询。请参阅两个查询中的
占位符。请尽可能尝试链接文档的最新版本。我知道甲骨文的网站是一个火车失事,经常出现错误的版本,但URL很容易调整,以纠正它。MySQL 5.6是当前稳定的版本。