У меня есть база данных mysql, и запрос построен на PHP. Запрос является традиционным запросом на обновление, но когда он выполняется, я получаю сообщение об ошибке 1062 Дубликат записи «4146» для ключа «ПЕРВИЧНЫЙ». Это кажется противоречивым, поскольку я пытаюсь обновить строку 4146, я не уверен, почему она жалуется.
У меня есть другие операторы PDO, которые работают нормально. Я попытался указать различные PDO :: PARAM и гуглил около часа, не найдя хорошего ответа.
Вот базовый SQL-оператор, за которым следует ошибка:
UPDATE tmp_event set
event_no=:event_no,
artist_no=:artist_no,
squality_no=:squality_no,
studio_album=:studio_album,
album=:album,
concert_display=:concert_display,
collection_display=:collection_display,
interview=:interview,
complete=:complete,
tradeable=:tradeable,
event_date=:event_date,
unqualified=:unqualified,
event_day=:event_day,
event_month=:event_month,
event_year=:event_year,
comments=:comments,
venue_no=:venue_no,
media_no=:media_no
Исключение PDO: Исключение PDO: SQLSTATE [23000]: Нарушение ограничения целостности: 1062 Повторяющаяся запись '4146' для ключа 'PRIMARY' в /media/web/www/2.4/admin/submit.php:969 Трассировка стека: # 0 /media/web/www/2.4/admin/submit.php(969): PDOStatement-> execute () # 1 {main}
Вот код PHP, который делает эту работу:
$sql = "UPDATE tmp_event set event_no=:event_no, artist_no=:artist_no, squality_no=:squality_no, studio_album=:studio_album, album=:album, concert_display=:concert_display, collection_display=:collection_display, interview=:interview, complete=:complete, tradeable=:tradeable, event_date=:event_date, unqualified=:unqualified, event_day=:event_day, event_month=:event_month, event_year=:event_year, comments=:comments, venue_no=:venue_no, media_no=:media_no";
$handle = $link -> prepare($sql);
$handle->bindparam(':event_no',$event_no, PDO::PARAM_INT);
$handle->bindparam(':artist_no',$artist_no, PDO::PARAM_INT);
$handle->bindparam(':squality_no',$squality_no, PDO::PARAM_INT);
$handle->bindparam(':studio_album',$studio_album, PDO::PARAM_INT);
$handle->bindparam(':album',$album, PDO::PARAM_INT);
$handle->bindparam(':concert_display',$concert_display, PDO::PARAM_INT);
$handle->bindparam(':collection_display',$collection_display, PDO::PARAM_INT);
$handle->bindparam(':interview',$interview, PDO::PARAM_INT);
$handle->bindparam(':complete',$complete, PDO::PARAM_INT);
$handle->bindparam(':tradeable',$tradeable, PDO::PARAM_INT);
$handle->bindparam(':event_date',$event_date, PDO::PARAM_STR);
$handle->bindparam(':unqualified',$unqualified, PDO::PARAM_INT);
$handle->bindparam(':event_day',$event_day, PDO::PARAM_INT);
$handle->bindparam(':event_month',$event_month, PDO::PARAM_INT);
$handle->bindparam(':event_year',$event_year, PDO::PARAM_INT);
$handle->$bindparam(':comments',$comments, PDO::PARAM_STR);
$handle->bindparam(':venue_no',$venue_no, PDO::PARAM_INT);
$handle->bindparam(':media_no',$media_no, PDO::PARAM_INT);
$handle->execute();
Я ожидаю, что запрос выполнит обновление без ошибок. Спасибо за ваше понимание!