Мне нужна помощь с моим PHP, так как у меня проблема с моим кодом.Когда я получаю электронное письмо и открываю его, оно обновляет значение в базе данных, так как оно обновляется как дважды.Пример: когда я открываю письмо, оно должно обновить значение как 1, но оно будет обновлять значение 2 вместо 1.
Вот open_mail.php:
<?php
header("Content-Type: image/jpeg");
readfile("image.jpeg");
//Connect to the database
include('config.php');
$id = $_GET['id'];
$tracking_sql = mysqli_fetch_assoc(mysqli_query($link, "SELECT username, subject, campaign, newsletter_type, opened FROM tracking2 WHERE id = '$id'"));
$param_username = $tracking_sql['username'];
$subject = $tracking_sql['subject'];
$campaign = $tracking_sql['campaign'];
$newsletter_type = $tracking_sql['newsletter_type'];
$opened = $tracking_sql['opened'];
$date = date('Y-m-d H:i:s');
if ($opened == 1)
{
if ($open_again == '')
{
mysqli_query($link, "UPDATE tracking2 SET opened = 2, datetime = '$date' WHERE id = '$id'");
$open_again = 'opened';
}
}
else if ($opened == 0)
{
if ($open_again == '')
{
mysqli_query($link, "UPDATE tracking2 SET opened = 1, datetime = '$date' WHERE id = '$id'");
$open_again = 'opened';
}
}
echo "<img src='http://example.com/Images/track.jpeg'>";
//close the connection
mysqli_close($link);
?>
ПроблемаЯ обнаружил, что это связано с этой строкой:
else if ($opened == 1)
Я добавил $open_again = 'opened'
, чтобы посмотреть, поможет ли это заблокировать, но это не помогло.И я тоже попробовал это, но это не имеет значения.
$tracking_sql = mysqli_fetch_assoc(mysqli_query($link, "SELECT username, subject, campaign, newsletter_type, opened FROM tracking2 WHERE id = '$id' LIMIT 1"));
Я не могу решить проблему, так как она обновляет ее дважды, как только я впервые получил письмо.Я не использую цикл или что-то еще, когда я использую переменную $ id для поиска идентификатора в базе данных, чтобы обновить его в той же строке, что и идентификатор, так как он должен обновлять его только один раз.Я считаю, что проблема в том, что что-то связано с open_mail.php.
Вот что показано в нижней части письма:
<img src=3D"http://example.com/open_mail.php?id=3D2602 " style=3D"width: 0;
max-height:0; overflow:hidden; ">
То, чего я хочу достичь, - это когда я впервыеПолучив письмо, и я открываю его, я хочу найти идентификатор в таблице отслеживания и обновить его до 1, поэтому, когда я снова открою письмо, оно обновит значение до 2, а затем 3, 4, 5 ...и т. д.
Не могли бы вы показать мне пример того, как лучше всего использовать блокировку обновления, как дважды после первого получения электронного письма, которое я открываю, так?