Mysql
 sql >> база данни >  >> RDS >> Mysql

PHP PDO не хвърля изключение при вмъкване на дублиран ключ

Актуализация 2018 г.:Разработчиците не смятат това за грешка, а за планирано поведение. Така че, потребителите на PHP трябва да живеят с това, докладът е затворен за всякакви бъдещи въпроси...

Това често се съобщава като грешка с PDO :https://bugs.php.net/bug.php?id=61613

Ще хвърли изключение само ако ПЪРВИ Изявлението е невалидно. Ако първото изявление работи гладко, няма да получите грешка - И първото ви изявление е валидно:

INSERT INTO `a` (`b`, `c`) VALUES
  (1, 1),
  (2, 2),
  (3, 2);

като заобиколно решение - или според потребител изтрит правилният начин да го направите - трябва да обработите наборите от редове един по един (взето от коментарите на докладите за грешки):

$pdo->beginTransaction();
try {
    $statement = $pdo->prepare($sql);
    $statement->execute();
    while ($statement->nextRowset()) {/* https://bugs.php.net/bug.php?id=61613 */};
    $pdo->commit();
} catch (\PDOException $e) {
    $pdo->rollBack();
    throw $e;
}



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Mysql тип данни или php код за увеличаване с 1 всеки път, когато страница в моята база данни се зареди в браузър

  2. Как да ПРИСЪЕДИНЕТЕ таблица с категории за родители в SQL заявка?

  3. Съхранение на излишни външни ключове, за да се избегнат присъединявания

  4. android.content.res.Resources$NotFoundException:низ на ресурс с идентификатор #0x2 база данни

  5. AJAX актуализира MYSQL база данни, използвайки функция, извикана от HTML, генериран от PHP