PHP, MySQL, первичный ключ остается неизменным для двух записей

У меня следующий код, как видно, у меня есть два оператора INSERT, которые вставляют две записи - одну с текущей датой, а другую - -1 день. Кажется, проблема в mysql_insert_id. Я получаю следующую ошибку:

Дублирующая запись '28' для ключа 'ПЕРВИЧНЫЙ'

Похоже, идентификатор остается одинаковым для обоих операторов, а также первый "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>"); 
}
?>

Вот структура таблицы:

`id` int(11) NOT NULL AUTO_INCREMENT,  
`date` date DEFAULT NULL,  `usageCount` int(11) DEFAULT NULL,  
`campaign` varchar(45) DEFAULT NULL,  PRIMARY KEY (`id`)

какие-либо предложения?

2 ответа

Решение

Хорошо, ребята, я сделал это немного по-дружески, но это работает. Я получаю последний идентификатор напрямую из mysql и увеличиваю его на 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);

Идентификатор в первом запросе не определен, однако структура таблицы всегда меняет значение NULL на NOT NULL, которое в данном случае будет следующим увеличенным значением. Надеюсь, кто-нибудь найдет это полезным.

Удалить параметр из mysqli_insert_idтолько mysqli_insert_id должен быть написан.. и повторить запрос, который будет вставлен.. вы получите значение того, что вставляется..используйте mysqli_free_result после каждого запроса вставки

Другие вопросы по тегам