Ответы пользователя по тегу PHP
  • Как вывести сообщение об ошибке?

    malfixfx
    @malfixfx
    Программист. :)
    ChatGPT на что?

    Необходимо изменить запрос на добавление данных в базу, чтобы он не вызывал ошибку при дубликате, а вместо этого возвращал информацию о том, что пользователь с таким емейлом уже существует. Для этого можно использовать конструкцию INSERT IGNORE или INSERT ... ON DUPLICATE KEY UPDATE.

    Пример с использованием INSERT IGNORE:
    if (isset($_POST['email'])) {
        $email = $_POST["email"];
        $query_result = db::i()->query("INSERT IGNORE INTO s_mailer_list (added, email, cats) VALUES (NOW(), '$email', ',С сайта,')");
        if ($query_result) {
            // Пользователь успешно добавлен
            echo "success";
        } else {
            // Пользователь с таким емейлом уже существует
            echo "duplicate";
        }
    }


    или просто try...catch:
    if (isset($_POST['email'])) {
        $email = $_POST["email"];
    
        try {
            $query_result = db::i()->query("INSERT INTO s_mailer_list (added, email, cats) VALUES (NOW(), '$email', ',С сайта,')");
            // The query was successful, so the user is subscribed.
            echo "success";
        } catch (Exception $e) {
            // Check if the exception is related to a duplicate entry for the 'email' column.
            if ($e->getCode() === 23000) {
                // This code represents a MySQL duplicate key error (Integrity constraint violation).
                // Handle the case when the email is already in the database.
                echo "duplicate";
            } else {
                // Handle other exceptions if needed.
                echo "error";
            }
        }
    }


    Дальше JS сам, думаю, допишешь.
    Ответ написан