PHP запустить один раз и вставить дважды в базе данных MySQL - PullRequest
5 голосов
/ 20 февраля 2011

У меня есть простой код ниже.После однократного запуска он дважды вставляет результаты в базу данных mysql.

, если он запускается дважды или дважды запрашивает основание на 1 обновлении на странице, почему вывод представляет собой всего 1 результат?

Iгуглил целый день и изо всех сил пытался решить эту проблему.Тем не менее, я не смог понять, что не так с этим кодом.Код отлично работает на локальном хосте, но после его перемещения на сервер возникает проблема.Кто-нибудь сталкивался с чем-то подобным раньше?Как решить эту проблему?

ПОЛНЫЙ КОД :

<?php
$db=mysql_connect('localhost','zzzzzzz','xxxxxx') or die('Unable to connect.'.mysql_error());
mysql_select_db('test',$db) or die(mysql_error($db));

$sql="INSERT INTO test_table(value,insert_time) VALUES ('testing','".time()."')";
$result=mysql_query($sql);
echo "result=".$result;

$select="select * from test_table";
$rs=mysql_query($select);
while($row=mysql_fetch_array($rs)){
echo $row["test_id"]." -- ".$row["value"]." -- ".$row["insert_time"]."<br />";
}
?>

РЕЗУЛЬТАТ :
результат = 1
1 - тестирование - 1298185509

НО В БАЗЕ ДАННЫХ :
test_id, значение, insert_time
1, тестирование, 1298185509
2, тестирование, 1298185511

Ответы [ 14 ]

0 голосов
/ 29 февраля 2016

Есть много причин для этого, поэтому я бы посоветовал вам использовать лучшие практики:

Если вы создаете новую запись в вашей БД, вам следует инициировать логику с помощью запроса POST .

if ($_SERVER['REQUEST_METHOD'] === 'POST') {
    // …
}

Теперь нужно легко избежать проблем, не связанных с кодом: вещь .htaccess, вещь Firebug, вещь отслеживания рекламы ...

0 голосов
/ 27 февраля 2016

У меня была такая же проблема на моем сайте.После отладки я нашел основную причину.Это яндекс метрика js библиотека.Он вызывает ajax-запрос к той же странице, чтобы вычислить время загрузки и некоторые другие параметры.

Используете ли вы это?Если нет, откройте Chrome Dev Panel и посмотрите запрос http.Может быть, это запрос на значок и т. Д.

0 голосов
/ 25 февраля 2016

Хорошо, я знаю, что это не имеет никакого смысла, но я решил удалить $.ajax({async:true}); из моего файла JS.

0 голосов
/ 25 декабря 2011
$result=mysql_query($sql); echo "result=".$result;

Это потому, что вы запускаете mysql_query($sql) дважды. Попробуйте это без эха $result.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...