MySQL вставляет записи дважды в базу данных - PullRequest
1 голос
/ 10 апреля 2011

У меня есть простой код, показанный ниже.После однократного запуска он дважды вставляет результаты в базу данных MySQL.Он отлично работает во всех браузерах (IE, Chrome и Safari), кроме Firefox.

Я использую Symfony php framework и propel в качестве ORM.

$con = Propel::getConnection();
   $sql =  "select * from tmp where user_id =$userid";  
   $stmt = $con->prepare($sql);  
   $stmt->execute(); 
   while($row = $stmt->fetch(PDO::FETCH_ASSOC))
   {
    $insert_sql = "INSERT IGNORE into library(xxx,xxx) VALUES('xyz','xys')";
    $insert_stmt = $con->prepare($insert_sql) ;
    $insert_stmt->execute();
   }

Ответы [ 2 ]

1 голос
/ 10 апреля 2011

В большинстве случаев это является следствием неразумного использования mod_rewrite, заставляющего некоторый файл действовать как обработчик ошибок 404.
Таким образом, если какой-то ресурс не найден, такой файл вызывается и выполняется.

Проверьте заголовки HTTP при вызове вашей страницы и посмотрите, какие дополнительные запросы выполняются.

0 голосов
/ 10 апреля 2011

Проблема глубже. Я не php-разработчик, но я могу понять, что проблема в дизайне. В идеале я думаю, что ваш клиент делает несколько запросов к вашему серверу, и каждый запрос вставляет запись в систему, прежде чем проверять, существует ли запись.

...