• Как правильно использовать mysqli_num_rows()?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    Это очень хороший вопрос.
    Ответ на него - никак не использовать.

    Да, в mysqli действительно есть специальная функция, которая может сказать, какое количество строк вернул запрос SELECT.
    Традиционно употребляется в двух случаях:

    а) когда это не нужно
    б) когда приводит к катастрофическим последствиям

    Первый вариант - это когда мы хотим узнать, вернул ли запрос хоть какие-то данные, или нет. Но на этот случай у нас есть сами данные. Зачем отдельно запрашивать их количество, если мы все равно будем эти данные получать в переменную, которую потом и можно будет использовать чтобы узнать, вернул ли запрос что-нибудь или нет.

    Второй вариант - если эта функция используется чтобы посчитать, сколько строк лежит в БД. В таком варианте это будет откровенное вредительство, поскольку данных может быть очень много, и все эти данные БД должна сначала получить у себя, а потом отправить в РНР. Заняв всю доступную память или даже вызвав фатальную ошибку нехватки памяти.

    Правильным решением этой задачи будет сделать запрос вида SELECT COUNT(*) FROM .... В этом случае БД сама внутри себя посчитает количество строк (очень быстро) и вернёт только одно число, которое не занимает оперативную память вообще.

    Вот и получается, что функция mysqli_num_rows() является либо вредной, либо бесполезной

    В данном случае надо сначала получить записи из БД
    // БЕЗОПАСНО выполняем запрос
    $stmt = $link->prepare("SELECT * FROM comments WHERE art_id = ?");
    $stmt->bind_param("s", $note_id);
    $stmt->execute();
    // получаем данные
    $result = $stmt->get_result();
    $comments = $result->fetch_all(MYSQLI_ASSOC);
    ?>

    А после этого уже их выводить
    <?php if ($comments): ?>
        <?php foreach ($comments as $row): ?>
             <?=$row['comment']?><br>
        <?php endforeach ?>
    <?php else: ?>
        Эту запись еще никто не комментировал
    <?php endif ?>


    Как видно, никакой mysqli_num_rows нам не понадобилось
    Ответ написан
    9 комментариев
  • Как в строке найти никнейм?

    Softer
    @Softer
    Как-то так
    preg_match ("/@\w/", $string, $matches);
    Ответ написан
    9 комментариев
  • Как перевести Mysql запрос в Laravel?

    New_Horizons
    @New_Horizons
    Бред:
    Вот вариант попроще чем raw:
    books.popularity - 150 < 100
    books.popularity < 100 + 150
    books.popularity < 250
    Эти три записи эквивалентны. Школьный курс математики)
    Ответ написан
    Комментировать
  • Как перевести Mysql запрос в Laravel?

    Fernus
    @Fernus
    Техник - Механик :)
    $books= DB::table('books')
                            ->where('author ','=', 'kipling')
                            ->whereRaw('popularity - 150 < 100')...
    Ответ написан
    Комментировать
  • Yii2 Как правильно реализовать pjax всего сайта?

    @AlexndrNovikov
    Solution Architect in Spiral Scout
    В первую очередь при возникновении такого вопроса стоит поинтересоваться - а зачем это вообще делать?

    Но оставим этот вопрос висеть в воздухе, ответим на заданные.

    Скажите, есть ли смысл запихивать весть сайт в pjax?Используют ли вообще так pjax или он больше для других целей?


    Конкретно в pjax - нет. Yiiшный pjax это инструмент для оборачивания одного виджета для обеспечения его работы по ajax. Это даже по полному имени класса заметно - yii\widgets\Pjax Т.е чтобы весь сайт работал через pjax - нужно извратиться и сделать его весь - одним виджетом, пусть и со встроенными в него другими. Роутинг такого виджета станет вашим начным кошмаром, потому что стоковый Yiiшный к такому не готов - да и не должен

    где его нужно вставлять, чтобы было правильно и как лучше это делать с использованием такого шаблона?

    Если вам ехать, а не шашечки, то чтобы сделать Single page application используйте технологию для этого подходящую. React, Angular, Vue - весь мир современного фронтенда к вашим услугам. Да, не получится сделать это штатными средствами Yii, и не прокачаетесь в Pjax, но зато получите опыт написания Api на Yii (с которым будет работать SPA) и полноценного фронтенда.
    Ответ написан
    3 комментария
  • Yii2 Как правильно реализовать pjax всего сайта?

    webinar
    @webinar Куратор тега Yii
    Учим yii: https://youtu.be/-WRMlGHLgRg
    Yii2 Как правильно реализовать pjax всего сайта?

    правильно такого не делать
    Ответ написан
    Комментировать