Как вводить электронные письма в базу данных MySQL - PullRequest
0 голосов
/ 25 апреля 2019

Итак, я пытаюсь хранить электронные письма из gmail, я уже все подключил, и мне удается сохранить весь контент электронной почты в базе данных, но теперь у меня проблема, что каждый раз, когда я обновляю страницу, одни и те же электронные письма сохраняются в базе данных.

$bodyText = imap_fetchbody($inbox,$email_number,1.2);

if(!strlen($bodyText)>0){
    $bodyText = imap_fetchbody($inbox,$email_number,1);
}
$subject = imap_headerinfo($inbox,$email_number);
$subject = $subject->subject;
$stripped = str_replace('*', '<br>', $bodyText);

$sql = "SELECT id, subject, body FROM emails";
$result = $conn->query($sql);

 if ($result->num_rows > 0) {
// output data of each row
while($row = $result->fetch_assoc()) {
   $email_subject = $row['subject'];
    if ($subject == $email_subject) {
        echo "Email already in database";
    }else{
         $sql = "INSERT INTO emails (subject, body)
        VALUES ('".$subject."', '".$stripped."')";
            if ($conn->query($sql) === TRUE) {
            echo "New record created successfully";
        } else {
            echo "Error: " . $sql . "<br>" . $conn->error;
        }
     }
}
} else {
echo "0 results";
}

Итак, я попытался использовать это

if ($subject == $email_subject) {
        echo "Email already in database";
    }else{
         $sql = "INSERT INTO emails (subject, body)
        VALUES ('".$subject."', '".$stripped."')";
            if ($conn->query($sql) === TRUE) {
            echo "New record created successfully";
        } else {
            echo "Error: " . $sql . "<br>" . $conn->error;
        }
     }

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

Положите что-то не так, и я продолжаю получать одни и те же электронные письма в базе данных, поэтому каждый раз, когда я обновляю всю папку« Входящие »моей электронной почтывходит в базу данных

1 Ответ

0 голосов
/ 25 апреля 2019

Прежде всего, вы должны всегда использовать подготовленные операторы PDO или MySQLi для предотвращения SQL-инъекций.

Также похоже, что вы зацикливаете свои записи в базе данных и проверяете текущую электронную почту по каждой записи. Вам нужно использовать запрос SELECT с темой текущего электронного письма в качестве параметра WHERE, чтобы проверить, есть ли этот предмет в базе данных.

В качестве альтернативы используйте ON DUPLICATE KEY UPDATE при вставке новой записи.

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