Mysql Insert одним запросом записывает две строки

picachu

Новичок
Доброго всем.

Подскажите в чем может быть проблема.
Следующий код при выполнении пишет в базу данные два раза.

  1. <?PHP
  2. require_once './cons.php'; //Файл с параметрами базы данных
  3. $client_ip = $_SERVER['REMOTE_ADDR']; //IP клиента
  4. $take_id = $_GET["dev"]; // ID устройства
  5. $take_vol = $_GET["val"]; // Переданый параметр
  6. $dcb = mysqli_connect($dbhost, $dbuser , $dbpass , $dbname); //устанавливаем подключение к MySQL
  7. //Формируем запрос
  8. $query = "INSERT INTO w_logger SET i_data = CURDATE(), i_time = CURTIME(), i_sensor = '$take_id', i_mane = '$take_name', i_vol = '$take_vol', i_client = '$client_ip'";
  9. mysqli_query($dcb, "SET NAMES 'utf8'"); // Установим кодировку
  10. $result = mysqli_query($dcb, $query); //Отправим данные в таблицу
  11. // Обработка ошибок
  12. if (mysqli_connect_errno()) {
  13. printf("Сбой подключения: %s\n", mysqli_connect_error());
  14. exit();
  15. }
  16. if (!mysqli_query($dcb, $query)) {
  17. printf("Ошибка запроса: %s\n", mysqli_error($dcb));
  18. }
  19. mysqli_close($dcb); //Закрываем подключение к базе
  20. ?>
Это весь код. И это единственный файл на локальном сервере
Вызывается скрипт пока через F5 в браузере следующей командой.
http://172.16.10.150/zway1.php?dev=ZWayVDev_zway_14-0-37&val=on

Всё работает, в базу всё пишется правильно, но каждый раз запрос записывает две полностью идентичные строки.
Без имени.png
На сервере стоит apach2, php7, mysql. Устанавливалось все по умолчанию.
В error.log ошибок нет, в access.log видно что скрипт вызывался один раз.

В отладчике браузера смотрел. Скрипт вызывается один раз.

Пробовал лисой, хромом, ие11, эдж. Скрипт вызывается один раз, записей в таблице записывается две.
1.png
Примерную тему в на форуме видел. Выполнил все рекомендации.
Никаких расширений в браузерах нет.
Это прочитал - "ответ на этот вопрос (очень подробный, с примерами и пояснениями) лежит здесь: PHP FAQ: Ничего не работает! Что делать???"

В базе смотрел и phpmyadmin и HeidiSQL и посредством запроса из консоли. Пишется всегда две строки.

PS. На всякий случай, уважаемый гуру, я не программист, то есть от слова совсем. Это мелкое хобби, которым занимаюсь для себя в свободное время. Поэтому. пожалуйста, поэтому отправляя меня по ссылкам пишите хоть ключевые слова, по котором искать ответ.
 

picachu

Новичок
Ээээ, уважаемы VMix, Вы не могли бы пояснить смысл ответа.
По Z10 + Z16 гугл нашел двигатель от минивэна, фрезы, дома и вентилятор от корса.
По РНР, SQL никакой информации.
 

picachu

Новичок
Аааа, понял. Исправилось.
Я брал пример с какого то сайта, там так ошибки выводились.
Огромное спасибо.
Как всё просто оказывается, когда тебя ткнут носом :(
 

So-cold

Новичок
Аааа, понял. Исправилось.
Я брал пример с какого то сайта, там так ошибки выводились.
Огромное спасибо.
Как всё просто оказывается, когда тебя ткнут носом :(
Если не трудно скажи в чем была проблема. Тоже самое (только в другом коде немного ) и не могу понять в чём дело. ?
 

WMix

герр M:)ller
Партнер клуба
mysqli_query вызванна 2 раза в стоках 10 и 16
 

picachu

Новичок
Если не трудно скажи в чем была проблема. Тоже самое (только в другом коде немного ) и не могу понять в чём дело. ?
Если посмотреть на мой код, то в 10 строке данные записываются в базу.
А в 16 строке идет проверка на ошибку в запросе. Вернее должна идти. Но вместо этого почему то записываются данные второй раз. Почему я не понял. Убрал, заработало и ладно.
 

So-cold

Новичок
Если посмотреть на мой код, то в 10 строке данные записываются в базу.
А в 16 строке идет проверка на ошибку в запросе. Вернее должна идти. Но вместо этого почему то записываются данные второй раз. Почему я не понял. Убрал, заработало и ладно.
Хм ,и после того как ты убрал у тебя данные записываются в базу ?
 

picachu

Новичок
Хм ,и после того как ты убрал у тебя данные записываются в базу ?
Да. А что то не так?
Естественно я убрал только 16 строку а не обе. Либо чуть выше уважаемый @WMix, подсказал как сделать.

Но так как я не пишу программы коммерческие для кого то и запрос работает то я просто убрал одну строку.
 

So-cold

Новичок
$success = mysqli_query(...)
...
if (!$success ) {
Извините что туплю , но все же если возможно расскажите в чем дело:
$result= mysqli_query($db,$query); \\ Выполняем запрос к базе , в нее прийдет true или false .
//Test if there was a query error
if($result) {
//Successfuly
//redirect_to("somepage.php");
echo "Success";
}else{
//Failure
//$message= 'Creating object failed';
die("Database query failed " . mysqli_error($connection) );
}
И после запроса проверяем на успех. Мб я тупой , но я не могу понять,из за чего вдруг мы получаем вторую строку -_- Расскажите если не сложно.
 

Фанат

oncle terrible
Команда форума
Если посмотреть на мой код, то в 10 строке данные записываются в базу.
А в 16 строке идет проверка на ошибку в запросе. Вернее должна идти. Но вместо этого почему то записываются данные второй раз. Почему я не понял. Убрал, заработало и ладно.
То есть ты не понял, что если функцию записи вызвать два раза, то данные запишутся два раза?
Давай я порпробую намекнуть. Если mysqli_query с одним и тем же запросом вызвать три раза - сколько раз данные запишутся в базу?
 

picachu

Новичок
То есть ты не понял, что если функцию записи вызвать два раза, то данные запишутся два раза?
Давай я порпробую намекнуть. Если mysqli_query с одним и тем же запросом вызвать три раза - сколько раз данные запишутся в базу?
Нет, почему записывается две строки я понял, я все таки не совсем идиот. Из за вызова функции два раза.
Я не понял почему она, эта функция так работает. На каком то сайте так было написана функция проверки ошибок.
Я ее скопировал как есть и почему она так работает мне нет причины разбираться. Меня ткнули носом знающие люди, я осознал в чём неправ.
Теперь если мне это когда нибудь понадобиться, я буду разбираться почему. Но это вряд ли, так как моё хобби с РНР заключается в написании одного файла максимум раз в год.
 

So-cold

Новичок
Всем спасибо за ответы , у меня проблема в хроме оказалась . Так как код другой .
 

Фанат

oncle terrible
Команда форума
Всем спасибо за ответы , у меня проблема в хроме оказалась . Так как код другой .
проблема не в "хроме", а в кривом роутинге.
если у тебя скрипт обрабатывает вообще любой запрос который приходит на сайт, то хром здесь как бы не при чем. На живом сайте это будет не двойная вставка, а пятидесятикратная.
 
Сверху