За последние 24 часа нас посетили 17996 программистов и 1642 робота. Сейчас ищут 2017 программистов ...

вставляет в таблицу сразу 2 записи

Тема в разделе "PHP и базы данных", создана пользователем Alex_@, 2 авг 2013.

  1. Alex_@

    Alex_@ Активный пользователь

    С нами с:
    1 окт 2009
    Сообщения:
    76
    Симпатии:
    0
    Здравствуйте!
    У меня возникла проблема при работе с БД: при выполнении запроса типа INSERT вставляется сразу 2 записи.
    работал c PDO, сначала решил что я "накосячил" с кодом, решил сделать по старинке:
    Код (Text):
    1.  
    2. $link = mysql_connect('localhost','login','pass');
    3. mysql_select_db('data');
    4. mysql_query("INSERT INTO `variable`(`name`,`data`) VALUES ('запись1','значение1')",$link);
    таблица такого рода:
    Код (Text):
    1.  
    2. CREATE TABLE IF NOT EXISTS `variable` (
    3.   `name` varchar(128) NOT NULL,
    4.   `data` varchar(255) NOT NULL
    5. ) ENGINE=MyISAM DEFAULT CHARSET=utf8;
    но так же возникла проблема с дублирующей записью.
     
  2. shelestov

    shelestov Активный пользователь

    С нами с:
    25 авг 2011
    Сообщения:
    148
    Симпатии:
    0
    Адрес:
    Россия, Арзамас
    Пробовали ставить var_dump() в коде, может быть код 2 раза выполняется?
    МОжет где то цикл или еще что то...
     
  3. Alex_@

    Alex_@ Активный пользователь

    С нами с:
    1 окт 2009
    Сообщения:
    76
    Симпатии:
    0
    Весь код файла представляет из себя
    Код (Text):
    1.  
    2. <?php
    3. /**
    4.  * @author kilyanov
    5.  * @copyright 2013
    6.  */
    7.  
    8. $link = mysql_connect('localhost','login','pass');
    9. mysql_select_db('data');
    10. mysql_query("INSERT INTO `variable`(`name`,`data`) VALUES ('запись1','значение1')",$link);
    11.  
    12. ?>
    вообще никаких циклов.
     
  4. artoodetoo

    artoodetoo Суперстар
    Команда форума Модератор

    С нами с:
    11 июн 2010
    Сообщения:
    11.115
    Симпатии:
    1.244
    Адрес:
    там-сям
    попробуй выполнять скрипт из командной строки и открывать страницу разными браузерами. накопи статистику когда именно задупляется.

    Добавлено спустя 8 минут 10 секунд:
    возможны всякие "тупые" расклады.

    например это файл index, на который через mod_rewrite заворачиваются ВСЕ запросы. в итоге он выполняется еще и при запросе favicon.ico :)

    еще видел сообщение, что браузер может послать второй запрос на тот же адрес если в теле страницы встретится <img src="" /> - пустое src.

    возможно какой-то браузерный плагин за каким-нибудь хером шлёт свои запросы. так что поэкспериментируй и выдай нам расклады.
     
  5. Alex_@

    Alex_@ Активный пользователь

    С нами с:
    1 окт 2009
    Сообщения:
    76
    Симпатии:
    0
    Блин капец-)
    удалил файл .htaccess из директории
    всё работать начало как часы-) и во всех браузерах.
    вот код файла, не подскажите что тут за косяк:
    Код (Text):
    1.  
    2. <IfModule mod_php5.c>
    3.   php_flag magic_quotes_gpc                 off
    4.   php_flag magic_quotes_sybase              off
    5.   php_flag register_globals                 off
    6.   php_flag session.auto_start               off
    7.   php_value mbstring.http_input             pass
    8.   php_value mbstring.http_output            pass
    9.   php_flag mbstring.encoding_translation    off
    10. </IfModule>
    11. <IfModule mod_expires.c>
    12.   ExpiresActive On
    13.   ExpiresDefault A1209600
    14.   <FilesMatch \.php$>
    15.     ExpiresActive Off
    16.   </FilesMatch>
    17. </IfModule>
    18. <IfModule mod_rewrite.c>
    19.   RewriteEngine on
    20.   RewriteRule "(^|/)\." - [F]
    21.   RewriteCond %{REQUEST_FILENAME} !-f
    22.   RewriteCond %{REQUEST_FILENAME} !-d
    23.   RewriteRule ^(.*)$ index.php?id=$1 [L,QSA]
    24.   <IfModule mod_headers.c>
    25.     RewriteCond %{HTTP:Accept-encoding} gzip
    26.     RewriteCond %{REQUEST_FILENAME}\.gz -s
    27.     RewriteRule ^(.*)\.css $1\.css\.gz [QSA]
    28.     RewriteCond %{HTTP:Accept-encoding} gzip
    29.     RewriteCond %{REQUEST_FILENAME}\.gz -s
    30.     RewriteRule ^(.*)\.js $1\.js\.gz [QSA]
    31.     RewriteRule \.css\.gz$ - [T=text/css,E=no-gzip]
    32.     RewriteRule \.js\.gz$ - [T=text/javascript,E=no-gzip]
    33.     <FilesMatch "(\.js\.gz|\.css\.gz)$">
    34.       Header set Content-Encoding gzip
    35.       Header append Vary Accept-Encoding
    36.     </FilesMatch>
    37.   </IfModule>
    38. </IfModule>
    Добавлено спустя 31 минуту 48 секунд:
    оставил в файле .htaccess
    только
    Код (Text):
    1.  
    2. ErrorDocument 404 /index.php
    3. DirectoryIndex index.php index.html index.htm
    4. # PHP 5, Apache 1 and 2.
    5. <IfModule mod_php5.c>
    6.   php_flag magic_quotes_gpc                 off
    7.   php_flag magic_quotes_sybase              off
    8.   php_flag register_globals                 off
    9.   php_flag session.auto_start               off
    10. </IfModule>
    11. <IfModule mod_rewrite.c>
    12.   RewriteRule ^(.*)$ index.php?id=$1 [L,QSA]
    13. </IfModule>
    по прежнему вставляет 2 записи
     
  6. artoodetoo

    artoodetoo Суперстар
    Команда форума Модератор

    С нами с:
    11 июн 2010
    Сообщения:
    11.115
    Симпатии:
    1.244
    Адрес:
    там-сям
    я же тебе по русски написал про mod_rewrite. здесь нет никакой мистики. ты просто должен разные запросы обрабатывать по разному.

    напиши вместо
    Код (Text):
    1. 'запись1','значение1'
    например
    Код (Text):
    1. microtime(true), $_SERVER['REQUEST_URI']
    может в голове прояснится :D
     
  7. Alex_@

    Alex_@ Активный пользователь

    С нами с:
    1 окт 2009
    Сообщения:
    76
    Симпатии:
    0
    сделал именно так.
    мне вставилось 2 строчки
    Код (Text):
    1. INSERT INTO `variable` (`name`, `data`) VALUES
    2. ('1375439705.422', '/'),
    3. ('1375439705.4495', '/favicon.ico');
    и откуда взялась 2 строчка?
     
  8. shelestov

    shelestov Активный пользователь

    С нами с:
    25 авг 2011
    Сообщения:
    148
    Симпатии:
    0
    Адрес:
    Россия, Арзамас
    Код (Text):
    1. ErrorDocument 404 /index.php
    favocon.ico отсутствует, поэтому и второй запрос на index.php
    Хотя тут даже наверное реврайт его перекидывает туда.
    Задите на URL/favicon.ico
     
  9. Alex_@

    Alex_@ Активный пользователь

    С нами с:
    1 окт 2009
    Сообщения:
    76
    Симпатии:
    0
    перешёл по адресу URL/favicon.ico
    дамп таблицы:
    Код (Text):
    1. INSERT INTO `variable` (`name`, `data`) VALUES
    2. ('1375440565.153', '/favicon.ico'),
    3. ('1375440565.1809', '/favicon.ico');
    я вообще не понимаю откуда взялся это /favicon.ico
     
  10. shelestov

    shelestov Активный пользователь

    С нами с:
    25 авг 2011
    Сообщения:
    148
    Симпатии:
    0
    Адрес:
    Россия, Арзамас
    Браузер его запрашивает всегда, чтобы отобразить на кладке.
    Это иконка сайта.
    Попробуйте создать файл favicon.ico в корене и посмотреть на кол-во запросов после этого.
     
  11. Alex_@

    Alex_@ Активный пользователь

    С нами с:
    1 окт 2009
    Сообщения:
    76
    Симпатии:
    0
    Всё спс огромное выручили, а то я ковырялся с этим дня три, причём ошибку искал в php-коде.
    всё нормально всё работает правильно.
    только как прописать в файле .htaccess, что favicon.ico находиться в каталоге themes/my_themes/favicon.ico???
     
  12. shelestov

    shelestov Активный пользователь

    С нами с:
    25 авг 2011
    Сообщения:
    148
    Симпатии:
    0
    Адрес:
    Россия, Арзамас
    Не пробовал, но можно поставить тег
    Код (Text):
    1. <link href="/theme/my_theme/favicon.ico" rel="shortcut icon" type="image/x-icon" />
    возможно браузер начнет запрашивать оттуда. Сам не пробовал. У меня фавикон всегда в корне валялся.
     
  13. Alex_@

    Alex_@ Активный пользователь

    С нами с:
    1 окт 2009
    Сообщения:
    76
    Симпатии:
    0
    Всё отлично, всё работает как надо!
    Огромное СПАСИБО за помощь!