PHP、mysql、主键在两条记录中保持不变

PHP、mysql、主键在两条记录中保持不变,php,mysql,insert-id,Php,Mysql,Insert Id,我有以下代码,如图所示,我有两个INSERT语句,它们插入两条记录——一条是当前日期,另一条是1天。问题似乎与mysql\u insert\u id有关。我发现以下错误: 键“PRIMARY”的重复条目“28” 看起来这两条语句的ID都保持不变,而且添加第一个INSERT没有任何问题,问题在于尝试将第二条记录添加到同一个表中的行。以下是脚本: <? include("session.php"); include("database_common.php"); if (isset($camp

我有以下代码,如图所示,我有两个INSERT语句,它们插入两条记录——一条是当前日期,另一条是1天。问题似乎与mysql\u insert\u id有关。我发现以下错误:

键“PRIMARY”的重复条目“28”

看起来这两条语句的ID都保持不变,而且添加第一个INSERT没有任何问题,问题在于尝试将第二条记录添加到同一个表中的行。以下是脚本:

<?
include("session.php");
include("database_common.php");
if (isset($campaignName) & isset($campaignRedirect))    {
    $dataTable = 'qrData_'.$_SESSION['displayName'];
    $statTable = 'qrStat_'.$_SESSION['displayName'];
    $query = mysql_query("INSERT INTO ".$dataTable." VALUES(".mysql_insert_id($connection).", '".$campaignRedirect."', '".$campaignName."');", $connection);
    $statBlank1 = mysql_query("INSERT INTO ".$statTable." VALUES(".mysql_insert_id($connection).", CURDATE() - INTERVAL 1 DAY, 0, '".$campaignName."');", $connection);
    $statBlank2 = mysql_query("INSERT INTO ".$statTable." VALUES(".mysql_insert_id($connection).", CURDATE(), 0, '".$campaignName."');", $connection);
    if ($statBlank1) echo "stat 1 ok";
    else echo mysql_error($connection);
    if ($statBlank2) echo "stat 1 ok";
    else echo mysql_error($connection);
    if ($query) die("<center>Kampaň úspešne vytvorená<br><br><button      onclick='parent.jQuery.fancybox.close();' name='submit' class='btn btn-primary'>Zatvoriť</button></center>");
    else die("<center>Vyskytla sa chyba. Prosím, zopakujte Vašu požiadavku.</center>"); 
}
?>

有什么建议吗?

从mysqli\u insert\u id.中删除参数。仅写入mysqli_insert_id.&回显要插入的查询..您将获得插入的值..在每次插入查询后使用mysqli_free_result

好的,伙计们,我做了一点amish,但它是有效的。我直接从mysql获取最后一个id,并在下一个记录中将其增加1,如下所示:

$statBlank1 = mysql_query("INSERT INTO ".$statTable." VALUES(ID, CURDATE() - INTERVAL 1 DAY, 0, '".$campaignName."');");
$statBlank2 = mysql_query("INSERT INTO ".$statTable." VALUES(LAST_INSERT_ID() + 1, CURDATE(), 0, '".$campaignName."');", $connection);

第一个查询中的ID是未定义的,但是表结构总是将NULL值更改为NOTNULL,在本例中,NOTNULL将是下一个递增的值。希望有人会觉得这很有帮助。

您混合了mysql_*和mysqli_*函数。这是行不通的。首先,mysqli_报告是针对mysqli_的,而不是针对mysql_函数的。qrStat_的主键是什么?它是否包含活动名称?从mysql_insert_id中删除参数..即。只有mysql\u insert\u id需要写入。@amdixon-id是AI PK INT NOT NULL。查看问题下的注释-这不是问题。是的,但由于上述活动,id保持不变。如果仅使用mysql\u insert\u id,则会为每个插入的查询生成新值。问题不止这些。OP正在混合API,这将不起作用。尝试后,结果保持不变。第一条记录被添加,第二条记录得到重复的id。他应该,但他不是。
$statBlank1 = mysql_query("INSERT INTO ".$statTable." VALUES(ID, CURDATE() - INTERVAL 1 DAY, 0, '".$campaignName."');");
$statBlank2 = mysql_query("INSERT INTO ".$statTable." VALUES(LAST_INSERT_ID() + 1, CURDATE(), 0, '".$campaignName."');", $connection);