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

    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 => "Нет блокировок",
    };
    Ответ написан
    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) {
    Ответ написан
    Комментировать
  • Есть ли программа для проектирования базы данных?

    rozhnev
    @rozhnev Куратор тега MySQL
    Fullstack programmer, DBA, медленно, дорого
    Я думаю Вы понимаете, что никакой визуальный конструктор не решит Вашу проблему с отсутствием логики.
    Но ежели оно вам нужно то имя им:
    https://sqldbm.com/Home/
    https://www.dbdesigner.net/
    https://www.google.com/search?q=sql+schema+editor
    Ответ написан
    Комментировать
  • Ошибка в транзакций mysql. как решить?

    @Akina
    Сетевой и системный админ, SQL-программист.
    Для передачи из одной записи в другую никакие транзакции нафиг не нужны.

    UPDATE tablename
    SET balance = balance + CASE WHEN userid = @sender
                                 THEN -@amount
                                 ELSE @amount
                                 END
    WHERE userid IN (@sender, @receiver);
    Ответ написан
    1 комментарий
  • Как получить список таблиц и полей без индекса (mysql), по которым происходит выбор?

    ipatiev
    @ipatiev
    Потомок старинного рода Ипатьевых-Колотитьевых
    Джинны и феи бывают только в сказках, дружок.

    Сидеть разбирать вручную каждый запрос через explain - именно так это и делается.
    Потому что само по себе механические впиливание индекса не решает вообще ничего.
    Оптимизация запроса - это далеко совсем не только "создать индекс на поле, по которому идёт выборка"
    Потому что этот индекс может не сработать
    Потому что может быть нужен совсем другой индекс.
    Потому что избыточные индексы могу наоборот замедлить приложение.
    Ответ написан
    Комментировать
  • Как реализовать в MySQL топики форума, которые участвуют сразу в нескольких разделах?

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    Мне почему-то кажется, что 'поиск Fulltext' должен подойти для такой задачи,
    Вам кажется. Кроме того что фуллтекст вообще не для этого, он еще и работать будет относительно медленно, так как вариативность значений будет низкая. Про "удобство" работы со строкой вместо нормального индекса вообще молчу.

    Нужно, чтобы можно было быстро находить все темы (топики) для одного заданного раздела (искать тему, которая относится сразу к двум и более разделам не нужно).
    м2м, это надежно и быстро, достаточно знать индекс раздела.

    Как такое реализовать максимально просто?
    Совет: Не гонитесь за кажущейся простотой, вы хапнете гораздо больше гемора от неправильной архитектуры, нежели от еще 15 минут, потраченных на создание таблицы справочника, пивот таблицы и написания 2 джоинов в запросе. Важнее сделать правильно, а не проще.
    Ответ написан
    3 комментария
  • Как сделать бэкап базы данных mysql с помощью php?

    @grek_cheburek
    Программист самоучка
    А если у автора путь поменяется, тогда что ему делать? В свое время, для себя, я писал скрипт, который делал бэкап базы, или таблицы, или всего сервера. Потратил на это два дня, но оно того стоило. Так что и вам рекомендую написать для себя такой же скрипт и будет тогда все ок. Логика проста. Вам нужно создать несколько функций. Одна будет подготавливать таблицу, другая будет подготавливать данные из таблицы, а третья соберет все это в один файл.
    Ответ написан
    Комментировать