Попытка обновить значение содержимого таблицы базы данных - PullRequest
1 голос
/ 03 мая 2020

Я пытаюсь обновить значение «Verified» в содержимом таблицы базы данных. Для «проверенного» содержимого установлено значение «false». Я использую PHPMailer для отправки ссылки для подтверждения по электронной почте, как только пользователь нажимает кнопку / ссылку, я хочу изменить проверенную таблицу с «false» на «true». Вот код, который я использую, электронная почта отправляет просто отлично, но когда ссылка нажата, она не обновляет таблицу. (Я удалил конфиденциальную информацию)

<?php


require 'controllers/authController.php';

require_once 'db/config.php';

$name = $_SESSION['username'];
$email = $_SESSION['email'];



use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\Exception;

require 'vendor/autoload.php';

$mail = new PHPMailer(true);

try{
// Server Settings
$mail->SMTPDebug = 1;
$mail->isSMTP();
$mail->Host = '';
$mail->SMTPAuth = true;
$mail->Username = '';
$mail->Password = '';
$mail->SMTPSecure = '';
$mail->Port = ;

// Recipients
$mail->setFrom('', '');
$mail->addAddress($email);

$body = '<!DOCTYPE html>
         <html lang="en">
         <head>
            <meta charset="UTF-8">
         </head>
         <body>
         <form method="post">
         <div class="wrapper">
          Hi, &nbsp;' . $name . '! <p>Please click the link below to verify your account.</p><br>
         <button class = btn btn-primary verifylink><a href="localhost/gitscripts/home.php">Verify Email</a></button>
         </form>';

if(isset($_GET['verifylink'])){
    $verified = true;

    $sql = "UPDATE users SET verified=[true]";
    $stmt = $conn->prepare($sql);
    $stmt->bind_param('b', $verified);
}



// Content
$mail->isHTML(true);
$mail->Subject = 'Verify Your Email';
$mail->Body = $body;
$mail->AltBody = strip_tags($body);

$mail->send();
echo 'Message has been sent';
} catch (Exception $e){
echo 'Message could not send';
echo 'Mailer Error: ' . $mail->ErrorInfo;
}
?>

Вот указанная строка кода c, которую я использовал, чтобы попытаться это осуществить ...

if(isset($_GET['verifylink'])){
    $verified = true;

    $sql = "UPDATE users SET verified=[true]";
    $stmt = $conn->prepare($sql);
    $stmt->bind_param('b', $verified);
}

1 Ответ

1 голос
/ 03 мая 2020

Если verified имеет тип bit или boolean, то используйте следующее:

UPDATE users SET verified = 1 -- Alternatively, set to 0 for false

Если вы действительно не хотите выполнять жестко запрограммированный запрос, вам нужно чтобы использовать в своем запросе оператор ?, который будет заменен значением, которое вы указали в $stmt->bind_param('b', $verified):

UPDATE users SET verified = ?

Проверьте этот вопрос , чтобы увидеть полную интеграцию

...