Задать вопрос
@stasbombit

У меня не правильный код?

В бд есть столбец тип блокировки(int)
Файл index.php делает запрос к бд:
$sql = "SELECT * FROM blocks WHERE user_id = '$id'";
if($result = mysqli_query($conn, $sql)){
    if(mysqli_num_rows($result) > 0){
        foreach($result as $row){
            $block_level = $row["type"];
            $block_text = $row["text"];
        }
    }
}

но после перевода цифры в текст:
if($block_level = 1){
    $block_text_type = "Незначительная блокировка";
}elseif($block_level = 2){
    $block_text_type = "Частичная блокировка";
}elseif($block_level = 3){
    $block_text_type = "Полная блокировка";
}else{
    $block_text_type = "Нет блокировок";
}

даже если об пользователе ничего нету(в бд) то всё равно $block_text_type = "Незначительная блокировка";
Даже если в бд написан тип 0
  • Вопрос задан
  • 164 просмотра
Подписаться 1 Простой 1 комментарий
Помогут разобраться в теме Все курсы
  • Skillfactory
    Профессия Fullstack веб-разработчик на JavaScript и PHP
    20 месяцев
    Далее
  • Хекслет
    PHP-разработчик
    10 месяцев
    Далее
  • Нетология
    Веб-разработчик с нуля: профессия с выбором специализации
    14 месяцев
    Далее
Решения вопроса 2
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
= ≢ ==
- if($block_level = 1){
+ if ($block_level == 1) {
- }elseif($block_level = 2){
+ } elseif ($block_level == 2) {
- }elseif($block_level = 3){
+ } elseif ($block_level == 3) {
Ответ написан
Комментировать
ipatiev
@ipatiev Куратор тега PHP
Потомок старинного рода Ипатьевых-Колотитьевых
Код тут действительно неправильный, причем по очень многим параметрам. Много бессмысленных телодвижений, инъекции, плюс условие можно записать оптимальнее. Так что помимо исправления конкретной опечатки от Rsa97, надо править этот код целиком
$sql = "SELECT * FROM blocks WHERE user_id = ?";
// выполняем запрос без инъекций. если версия РНР не новая, надо будет дописать эту функцию самому
$result = $conn->execute_query($sql, [$id]);
// получаем запрошенную строку, без всяких num_rows и foreach
$row = $result->fetch_assoc();
// получаем $block_level, даже если в $row пусто
$block_level = $row["type"] ?? 0;
// match - новое выражение в РНР начиная с 8.0 версии. в сто раз аккуратнее чем забор из elseif
$block_text_type = match ($block_level) {
    1 => "Незначительная блокировка",
    2 => "Частичная блокировка",
    3 => "Полная блокировка",
    default => "Нет блокировок",
};
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы
FoodSoul Калининград
от 180 000 до 250 000 ₽
IT-Spirit Москва
от 230 000 до 320 000 ₽
от 200 000 до 290 000 ₽