Здравствуйте! У меня возникла проблема при работе с БД: при выполнении запроса типа INSERT вставляется сразу 2 записи. работал c PDO, сначала решил что я "накосячил" с кодом, решил сделать по старинке: Код (Text): $link = mysql_connect('localhost','login','pass'); mysql_select_db('data'); mysql_query("INSERT INTO `variable`(`name`,`data`) VALUES ('запись1','значение1')",$link); таблица такого рода: Код (Text): CREATE TABLE IF NOT EXISTS `variable` ( `name` varchar(128) NOT NULL, `data` varchar(255) NOT NULL ) ENGINE=MyISAM DEFAULT CHARSET=utf8; но так же возникла проблема с дублирующей записью.
Пробовали ставить var_dump() в коде, может быть код 2 раза выполняется? МОжет где то цикл или еще что то...
Весь код файла представляет из себя Код (Text): <?php /** * @author kilyanov * @copyright 2013 */ $link = mysql_connect('localhost','login','pass'); mysql_select_db('data'); mysql_query("INSERT INTO `variable`(`name`,`data`) VALUES ('запись1','значение1')",$link); ?> вообще никаких циклов.
попробуй выполнять скрипт из командной строки и открывать страницу разными браузерами. накопи статистику когда именно задупляется. Добавлено спустя 8 минут 10 секунд: возможны всякие "тупые" расклады. например это файл index, на который через mod_rewrite заворачиваются ВСЕ запросы. в итоге он выполняется еще и при запросе favicon.ico еще видел сообщение, что браузер может послать второй запрос на тот же адрес если в теле страницы встретится <img src="" /> - пустое src. возможно какой-то браузерный плагин за каким-нибудь хером шлёт свои запросы. так что поэкспериментируй и выдай нам расклады.
Блин капец-) удалил файл .htaccess из директории всё работать начало как часы-) и во всех браузерах. вот код файла, не подскажите что тут за косяк: Код (Text): <IfModule mod_php5.c> php_flag magic_quotes_gpc off php_flag magic_quotes_sybase off php_flag register_globals off php_flag session.auto_start off php_value mbstring.http_input pass php_value mbstring.http_output pass php_flag mbstring.encoding_translation off </IfModule> <IfModule mod_expires.c> ExpiresActive On ExpiresDefault A1209600 <FilesMatch \.php$> ExpiresActive Off </FilesMatch> </IfModule> <IfModule mod_rewrite.c> RewriteEngine on RewriteRule "(^|/)\." - [F] RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*)$ index.php?id=$1 [L,QSA] <IfModule mod_headers.c> RewriteCond %{HTTP:Accept-encoding} gzip RewriteCond %{REQUEST_FILENAME}\.gz -s RewriteRule ^(.*)\.css $1\.css\.gz [QSA] RewriteCond %{HTTP:Accept-encoding} gzip RewriteCond %{REQUEST_FILENAME}\.gz -s RewriteRule ^(.*)\.js $1\.js\.gz [QSA] RewriteRule \.css\.gz$ - [T=text/css,E=no-gzip] RewriteRule \.js\.gz$ - [T=text/javascript,E=no-gzip] <FilesMatch "(\.js\.gz|\.css\.gz)$"> Header set Content-Encoding gzip Header append Vary Accept-Encoding </FilesMatch> </IfModule> </IfModule> Добавлено спустя 31 минуту 48 секунд: оставил в файле .htaccess только Код (Text): ErrorDocument 404 /index.php DirectoryIndex index.php index.html index.htm # PHP 5, Apache 1 and 2. <IfModule mod_php5.c> php_flag magic_quotes_gpc off php_flag magic_quotes_sybase off php_flag register_globals off php_flag session.auto_start off </IfModule> <IfModule mod_rewrite.c> RewriteRule ^(.*)$ index.php?id=$1 [L,QSA] </IfModule> по прежнему вставляет 2 записи
я же тебе по русски написал про mod_rewrite. здесь нет никакой мистики. ты просто должен разные запросы обрабатывать по разному. напиши вместо Код (Text): 'запись1','значение1' например Код (Text): microtime(true), $_SERVER['REQUEST_URI'] может в голове прояснится
сделал именно так. мне вставилось 2 строчки Код (Text): INSERT INTO `variable` (`name`, `data`) VALUES ('1375439705.422', '/'), ('1375439705.4495', '/favicon.ico'); и откуда взялась 2 строчка?
Код (Text): ErrorDocument 404 /index.php favocon.ico отсутствует, поэтому и второй запрос на index.php Хотя тут даже наверное реврайт его перекидывает туда. Задите на URL/favicon.ico
перешёл по адресу URL/favicon.ico дамп таблицы: Код (Text): INSERT INTO `variable` (`name`, `data`) VALUES ('1375440565.153', '/favicon.ico'), ('1375440565.1809', '/favicon.ico'); я вообще не понимаю откуда взялся это /favicon.ico
Браузер его запрашивает всегда, чтобы отобразить на кладке. Это иконка сайта. Попробуйте создать файл favicon.ico в корене и посмотреть на кол-во запросов после этого.
Всё спс огромное выручили, а то я ковырялся с этим дня три, причём ошибку искал в php-коде. всё нормально всё работает правильно. только как прописать в файле .htaccess, что favicon.ico находиться в каталоге themes/my_themes/favicon.ico???
Не пробовал, но можно поставить тег Код (Text): <link href="/theme/my_theme/favicon.ico" rel="shortcut icon" type="image/x-icon" /> возможно браузер начнет запрашивать оттуда. Сам не пробовал. У меня фавикон всегда в корне валялся.