@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
  • Вопрос задан
  • 159 просмотров
Решения вопроса 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 => "Нет блокировок",
};
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы