Обучение/Помощь новичкам | Проверка запросов в бд
Тема закрыта by
SNEG
С твоих слов откуда мне знать удалило запись или нет, также брать в if этот mysqli_query
php
elseif($user['i'] < time() - MAX_LIFETIME)
mysqli_query($mysqli, "DELETE FROM `".DB_PREFIX."_ggg` WHERE `vvv` = '".$vvv."'");Поможет избавиться от копипаст try catch и if()
________
посл. ред. 18.12.2023 в 02:02; всего 1 раз(а); by _(Ulty)_
Не могу понять почему первый варик лучше чем второй, если с базой разорвано соединение выдаст ошибку mysqli_connect();
Что может ещё случится ? Почему правильно первый варик если второй идентично работает

php
$query = mysqli_query($mysqli, "INSERT INTO `".DB_PREFIX."_users` SET `username` = '".esc($_POST['username'])."', `email` = '".esc($_POST['email'])."', `password` = '".$password."'");
if($query)
{
$reg_complete = 'Регистрация завершена.';
}Варик 2
php
$query = mysqli_query($mysqli, "INSERT INTO `".DB_PREFIX."_users` SET `username` = '".esc($_POST['username'])."', `email` = '".esc($_POST['email'])."', `password` = '".$password."'");
$reg_complete = 'Регистрация завершена.';В первом варианте за это отвечает if($query). Если соединение с бд вдруг разорвётся, то второй вариант никак не уведомит об этом, а первый наоборот вернёт ошибку и не пропустит на следующий шаг
________
посл. ред. 18.12.2023 в 02:56; всего 1 раз(а); by Denis Legran
Адм
Во втором варианте кода нет явной проверки на успешность выполнения запроса. Он устанавливает $reg_complete для "Регистрация завершена", независимо от результата запроса.
В первом варианте за это отвечает if($query). Если соединение с бд вдруг разорвётся, то второй вариант никак не уведомит об этом, а первый наоборот вернёт ошибку и не пропустит на следующий шаг
php
$user = mysqli_fetch_assoc(mysqli_query($mysqli, "SELECT `id`, `password` FROM `".DB_PREFIX."_users` WHERE `username` = '".esc($_POST['username'])."'"));
if(!$user)
$err = 'Пользователь '.htmlspecialchars($_POST['username']).' не найден.';Ок, что дальше ? Как обрабатывать?
________
посл. ред. 18.12.2023 в 03:22; всего 5 раз(а); by SNEG
Я понял смысл , типа update delete insert select можно обрабатывать, типа успех запроса , выполнился или нет при активном соединении, спасибо
php
$user = mysqli_fetch_assoc(mysqli_query($mysqli, "SELECT `id`, `password` FROM `".DB_PREFIX."_users` WHERE `username` = '".esc($_POST['username'])."'"));
if(!$user)
$err = 'Пользователь '.htmlspecialchars($_POST['username']).' не найден.';Ок, что дальше ? Как обрабатывать?
php
if (!$user) {
$err = 'Пользователь ' . htmlspecialchars($_POST['username']) . ' не найден.';
// Выводишь на этой же странице уведомление с ошибкой
echo $err;
}Можно ещё установить редирект на страницу входа с самой ошибкой
php
if (!$user) {
$err = 'Пользователь ' . htmlspecialchars($_POST['username']) . ' не найден.';
// Создаёшь перенаправление на страницу входа с сообщением об ошибке
header('Location: login.php?error=' . urlencode($err));
exit();
}В данном случае, передается сообщение об ошибке через URL, и на странице login.php пользователю отображается сообщение с ошибкой
________
посл. ред. 18.12.2023 в 04:04; всего 1 раз(а); by Denis Legran
Адм
Можно вывести ошибку пользователю
php
if (!$user) {
$err = 'Пользователь ' . htmlspecialchars($_POST['username']) . ' не найден.';
// Выводишь на этой же странице уведомление с ошибкой
echo $err;
}Можно ещё установить редирект на страницу входа с самой ошибкой
php
if (!$user) {
$err = 'Пользователь ' . htmlspecialchars($_POST['username']) . ' не найден.';
// Создаёшь перенаправление на страницу входа с сообщением об ошибке
header('Location: login.php?error=' . urlencode($err));
exit();
}В данном случае, передается сообщение об ошибке через URL, и на странице login.php пользователю отображается сообщение с ошибкой
Стр.: 1, 2