php - second condition not being met when condition is called
one text
Solution:
When $stmt
return null
results while block won't be executed.
Try this
<?php
if (($_SERVER['REQUEST_METHOD'] === "GET") && isset($_GET['hash_token'])) {
$db = DB_CONNECT();
$stmt = $db->prepare("SELECT id, email, confirm_code FROM users WHERE confirm_code = ?");
$stmt->bind_param('s', $_GET['hash_token']);
$stmt->execute();
$result = $stmt->get_result();
$stmt->close();
if (mysqli_num_rows($result) > 0 ) {
while ($row = mysqli_fetch_assoc($result)) {
$email = $row['email'];
$confirm_code = $row['confirm_code'];
if ($confirm_code !== null && $confirm_code === $_GET['hash_token']) {
$is_activated = 1;
$set_confirm_code = null;
$stmt2 = $db->prepare("UPDATE users SET is_activated = ?, confirm_code = ? WHERE confirm_code = ?");
$stmt2->bind_param('sss', $is_activated, $set_confirm_code, $confirm_code);
$stmt2->execute();
$stmt2->close();
set_message("Your account has been activated please login.", SUCCESS);
redirect_to_url("/");
} else {
set_message("Unable to activate with provided data.", WARNING);
redirect_to_url("/");
}
}
} else {
set_message("Unable to activate with provided data.", WARNING);
redirect_to_url("/");
}
}
Source