@yourbatya
Разрабатываю разработки

Как проверить в php результат запроса?

Добрый день.
У меня есть следующий код, который делает выборку из базы по уникальному значению. Я хотел сделать так, что если совпадения в базе есть, то происходит перенаправление на одну страницу, а если нет - возвращает обратно. Пытался проверить через result=true, но что-то не так. в любом случае, даже если совпадений нет, срабатывает первое условие.
Выглядит примерно так:
$SQL = "SELECT * FROM supp WHERE id='$id' AND sd='$sd'";
    $result = mysqli_query($link, $SQL);
    $post = mysqli_fetch_array($result, MYSQLI_ASSOC);
    $id = $post['id'];

    if ($result=true) {
      header('Location:nt.php?id='.$id.'');
    }
    else {
        header('Location:index.php?error');
    }
  • Вопрос задан
  • 2257 просмотров
Пригласить эксперта
Ответы на вопрос 5
FanatPHP
@FanatPHP
Чебуратор тега РНР
Как уже сказали в комментариях, результат запроса и данные, которые он вернул - это две разные вещи.
Когда ты лезешь в карман, чтобы узнать, хватит ли тебе на бутылку пива, ты тоже проверяешь не деньги, а карман? Если карман есть, значит и деньги тоже?

Проверять надо не карман, а деньги. Не результат запроса, а строки, которые он вернул. То есть надо просто сделать фетч и вот уже результат фетча проверять в условии. То есть if ($post)

Ну и как всегда надо напомнить, что переменные никогда не пихают в запрос напрямую, а передают отдельно. Готовый код можно посмотреть здесь, https://phpdelusions.net/mysqli/check_value
Ответ написан
Комментировать
@AUser0
Чем больше знаю, тем лучше понимаю, как мало знаю.
if (!empty($id)) {
  header('Location:nt.php?id='.$id.'');
}
else {
  header('Location:index.php?error');
}
Ответ написан
Lara164
@Lara164
начинающий верстальщик html, css
var_damp($_POST) ну или подставляете в вид параметра переменную запроса
Ответ написан
@fleader64
Первое условие выполняется в любом случае, т.к. внутри условия if указано не сравнение переменной со значением true, а присваивание переменной значения true.
Получается сначала выполняется $result=true, т.е. переменная становится равной true. И соответственно далее выполняется условие if(true).
Используйте или оператор сравнения == или вообще опускайте его - сработает приведение типов
Ответ написан
Комментировать
@shum0531
Используй mysqli_num_rows.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы