Задавайте вопросы, мы ответим
Вы не зашли.
Скрипт на PHP, ниже полный код файлика. В config.php - учетные данные для конекта к базе.
В базе таблица login с полем prem_bait (bigint(20))
<?php
$query_add='UPDATE `login` SET `login`.`prem_bait`= login`.`prem_bait`+`login`.`prem_bait`+`login`.`prem_bait`+`login`.`prem_bait`';
или
$query_add='UPDATE `login` SET `prem_bait`=`prem_bait`+`prem_bait`+`prem_bait`+`prem_bait`';
include("config.php");
$connection = mysql_connect("$server", "$db_user", "$db_pass");
$db = mysql_select_db("$database", $connection);
$result = mysql_query($query_add, $connection);
mysql_close($connection);
?>
В поле prem_bait (через phpMyAdmin) выставляю значение 5 . Легко подсчитать что должно получиться 20. Но после выполнения скрипта в поле prem_bait стоит значение 80 .
Если я выполняю этот же запрос через phpMyAdmin то всё нормально, выводится 20 как и положено.
Помогите разобраться. Чувствую что где-то что-то проглядел а вот где - непойму.
Неактивен
Может быть скрипт выполнился дважды?
Неактивен
rgbeast написал:
Может быть скрипт выполнился дважды?
Нет.
Я же написал что это один файлик. Вот после обращения к нему...
Для чистоты эксперимента запрос сделал вида:
$query_add='UPDATE `login` SET `prem_bait`=`prem_bait`+`prem_bait`+`prem_bait`+`prem_bait`+`prem_bait`';
то есть добавил один раз сложение.
После выполнения запроса теперь в поле 125
$query_add='UPDATE `login` SET `prem_bait`=`prem_bait`+`prem_bait`+`prem_bait`+`prem_bait`+`prem_bait`+`prem_bait`';
в поле 180
$query_add='UPDATE `login` SET `prem_bait`=`prem_bait`+`prem_bait`+`prem_bait`+`prem_bait`+`prem_bait`+`prem_bait`+`prem_bait`';
в поле 245
НЕ может же от количества раз сложения меняться количество выполнений скрипта (именно по коду скрипта из первого поста)
Неактивен
Все говорит о том, что скрипт выполняется именно дважды.
1. умножение на 5. 5*5=25; второй шаг 25*5=125
2. умножение на 6. 5*6=30; второй шаг 30*6=180
3. умножение на 7. 5*7=35; второй шаг 35*7=245
Неактивен
Полностью согласен!!! Именно так очень похоже.
Но, уверяю Вас.
Есть только один файлик с этим кодом
<?php
$server = "localhost"; // MySQL server
$db_user = 'grom'; // MySQL user
$db_pass = '1111111'; // MySQL user's password
$database = 'baza'; // MySQL database
$query_add='UPDATE `login` SET `prem_bait`=`prem_bait`+`prem_bait`+`prem_bait`+`prem_bait`+`prem_bait`+`prem_bait`+`prem_bait`';
$connection = mysql_connect("$server", "$db_user", "$db_pass");
$db = 1;
mysql_select_db("$database", $connection);
$result = mysql_query($query_add, $connection);
mysql_close($connection);
echo '<hr>';
echo $query_add;
echo '<hr>';
?>
Не могу же я пол дня нажимать дважды и потом ещё всем парить мозги.
Отредактированно GRoM (15.01.2009 13:39:29)
Неактивен
Сделайте отдельную таблицу CREATE TABLE myaccess ( atime TIMESTAMP); и добавьте в скрипт mysql_query("INSERT INTO myaccess VALUES (NULL)");
Увидите, что скрипт все же по каким-либо причинам выполнялся дважды. Может быть второй раз его запросил прокси, антивирус или какой-нибудь плагин к браузеру.
Неактивен
Изменил скрипт:
<?php
$server = "localhost"; // MySQL server
$db_user = 'grom_s'; // MySQL user
$db_pass = '159753'; // MySQL user's password
$database = 'servis'; // MySQL database
$query_add='UPDATE `login` SET `prem_bait`=`prem_bait`+`prem_bait`+`prem_bait`+`prem_bait`+`prem_bait`+`prem_bait`+`prem_bait`';
$connection = mysql_connect("$server", "$db_user", "$db_pass");
$db = 1;
mysql_select_db("$database", $connection);
$result = mysql_query($query_add, $connection);
$query = 'SELECT * FROM `login` WHERE 1';
$result = mysql_query($query, $connection);
while ($rows = mysql_fetch_array($result))
{
echo '<br>Результат: '.$rows['prem_bait'];
}
mysql_close($connection);
echo '<hr>';
echo $query_add;
echo '<hr>';
?>
В результате выводит:
Результат: 35
UPDATE `login` SET `prem_bait`=`prem_bait`+`prem_bait`+`prem_bait`+`prem_bait`+`prem_bait`+`prem_bait`+`prem_bait`
больше ни чего не выводит, что может свидетельствовать о выполнении скрипта только 1 раз.
После как захожу через пхпадмин - естественно стоит 245
Неактивен
Второе выполнение скрипта могло быть после первого, поэтому Вы видите правильный ответ, а потом скрипт выполняется еще раз вне браузера. Сделайте все же как написано в после #6.
Неактивен
Да, вы правы!
Выполнил этот скрипт с другого браузера - всё нормально. Теперь понятно куда копать...
Спасибо!!!
Неактивен
Всё гениальное просто!
Плагин YSlow в мозиле стоял с автозагрузкой и обращался второй раз к скрипту...
Просто выключил.
Спасибо ещё раз.
Неактивен
GRoM написал:
Плагин YSlow в мозиле стоял с автозагрузкой и обращался второй раз к скрипту...
Хороший плагин с говорящим названием. Он занимается тем, что замедляет работу инета?
Неактивен
Немного замедляет работу...
Нужен для отладки страниц сайта.
Работает в паре с Firebug, тоже для отлова ошибок.
Неактивен