• Как получить значение "balance" из базы данных одного пользователя БЕЗ ЦИКЛА?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
    $link = mysqli_connect($host, $user, $pass, $db_name);
    $link->set_charset("utf8mb4");
    
    $sql = "SELECT * FROM users WHERE id=?";
    $stmt = $conn->prepare($sql); 
    $stmt->bind_param("s", $_SESSION['user']);
    $stmt->execute();
    $result = $stmt->get_result(); 
    $user = $result->fetch_assoc(); 
    $balance = $user['balance']


    Только класть не логин а id юзера, и не в куки ,а в сессию
    Ответ написан
    Комментировать
  • Что такое instance и как это настроить?

    @Akina
    Сетевой и системный админ, SQL-программист.
    Что такое instance


    Вообще Instance - это экземпляр. В данном случае экземпляр MySQL-сервера.

    Скажем, в одной и той же операционной системе может работать несколько серверов MySQL - как одной и той же, так и разных версий. Только, чтобы не пересекаться по используемым ресурсам, они будут использовать разные номера портов и/или разные каналы. Вот эти серверы и есть Instances. Соответственно при подключении указываем нужный порт, и подключаемся к нужному в данный момент Instance. Обычно же в одной ОС работает только один сервер - тогда он является единственным Instance.

    PS. Операционка, в которой все они одновременно работают, тоже может быть Instance, но только уже OS instance, если она - одна из нескольких виртуализованных операционных систем, одновременно работающих на одном хосте в рамках одного VMM.

    как это настроить?

    Настройка MySQL-сервера на то, какие каналы (IP, named pipe, shared memory), а для IP - с какими настройками (номер порта), выполняется через конфигурационные файлы сервера. Где они, какие имеют имена, какие параметры следует устанавливать и прочее - читай в Reference Manual.
    Ответ написан
    Комментировать
  • Как продолжить цепь запросов в php?

    ipatiev
    @ipatiev Куратор тега PHP
    Потомок старинного рода Ипатьевых-Колотитьевых
    Если отбросить всю не относящуюся к вопросу чепуху, типа каких-то "внутренних запросов"(?!), то ответ сводится цепочке вызовов.
    Ответ написан
    Комментировать
  • Как вставить данные в запрос?

    ipatiev
    @ipatiev Куратор тега PHP
    Потомок старинного рода Ипатьевых-Колотитьевых
    public $query - это неправильно с десятка разных точек зрения, от архитектуры до простой житейской логики.
    Но при этом, если бы данные в запрос передавались правильно, а не как как обычно, то чисто технически это бы сработало

    В любом случае, public $query убрать, вместо этого добавить private $db, и в конструктор, соответственно, такой же параметр
    public function addProduct(){
        $query = 'INSERT INTO products (title, price, description, category, image, active) VALUES (?,?,?,?,?,?)';
        $stmt = $this->db->prepare($query);
        $stmt->bind_param("ssssss", $this->title, $this->price, $this->description, $this->category, $this->image, $this->$active);
        $stmt->execute();
    }
    Ответ написан
  • Как запретить гулять по серверным файлам в браузере?

    karabanov
    @karabanov Куратор тега Ubuntu
    Системный администратор
    Какой web сервер ты используешь?

    Для Apache это директива Options -Indexes
    Для Nginx это директива autoindex off;

    Чтобы вовсе запретить доступ к файлу извне прочитай про Allow и Deny.
    Ответ написан
    2 комментария
  • Как подставить алиас в sql?

    @Akina
    Сетевой и системный админ, SQL-программист.
    Приоритет запятой ниже приоритета JOIN. Поэтому запрос по факту такой:
    FROM adverts as a, 
         category as c, 
         ( category_advert as ca 
           LEFT JOIN advert_imgs as ai ON ai.main = 1 and ai.id_adv = a.id )

    Очевидно, что внутри скобок никакого a.id нет.

    Забудьте про возможность использовать запятую во FROM. Навсегда. Используйте вместо неё CROSS JOIN.
    Ответ написан
    6 комментариев
  • Стоит ли json'ить все и всегда при получении/отправки запроса?

    @Kirill-Gorelov
    С ума с IT
    Нет, не обязательно.
    Зависит от контекста задачи. Я думаю, что и тебе в этом скрытого смысла нету. Делай как удобно.
    Ответ написан
    Комментировать
  • Как вытащить данные из stmt?

    ipatiev
    @ipatiev Куратор тега PHP
    Потомок старинного рода Ипатьевых-Колотитьевых
    вместо store_result(); надо писать get_result();
    этот метод даст вам привычный ресурс, из которого уже можно получить данные обычным способом
    $stmt = $link->prepare("SELECT * FROM users WHERE id=?");
    $stmt->bind_param('i', $value);
    $stmt->execute();
    $result = $stmt->get_result();
    $row = $result->fetch_assoc();
    Ответ написан
    5 комментариев
  • Что изменить в базе данных?

    @ComodoHacker
    Ошибка первая — не понятно, какую задачу она должна решать. "Получить зачет"?
    Ответ написан
    Комментировать
  • В чем идея и как работают шаблоны?

    ipatiev
    @ipatiev Куратор тега PHP
    Потомок старинного рода Ипатьевых-Колотитьевых
    Вопрос очень хороший.
    А ответ на него очень простой.

    Шаблоны нужны для отделения логики приложения от логики отображения.
    Разделив их, мы получим сразу кучу выгод:
    • Нормальную структуру приложения, когда вывод начинается только после того, как отработала вся логика. То есть у нас никогда не будет проблем с ошибкой headers already sent, с возвратом json-а вместо html, с выводом в page header-е тех данных, которые появляются только в процессе работы скрипта
    • Мобильность - один и тот же движок можно будет использовать на нескольких сайтах, меняя только шаблоны, но весь код оставляя одинаковым. Что поможет, в частности, вносить обновления в движок и исправлять ошибки на всех сайтах разом.
    • Разделение труда - сейчас обычно над отображением работают фронтендеры, то есть, когда бизнес-логика отделена от шаблонов, то любой фронт сможет с ней работать


    Соответственно, главное, что надо знать про шаблоны - это то, что любой вывод в РНР скрипте начинается только после того, как отработала вся бизнес-логика.
    Также важно понимать, что в самом по себе смешивании "кода и разметки" ничего ужасного нет. В шаблоне всегда будет код. Без него невозможно выводить динамический контент. Важно только - какой это код, к чему он относится? Код в шаблоне должен относиться только к самому шаблону. На первых порах новичку сложно это отличить. И это еще один плюс специализированных шаблонизаторов.

    После этого есть варианты, которые отличаются в основном удобством работы с кодом шаблона.
    Править HTML код записанный в виде РНР строки - это САМЫЙ неудобный .

    Дальше идут всякие наколенные решения, типа
    бизнес-логика
    include header
    ?>
    хтмл конкретной страницы
    <?php include footer ?>

    или чуть более продвинутый, когда шаблоны хранятся отдельно и могут вкладывться друг в друга. Сначала пишем функцию,
    function render_template($filename, array $data = [])
    {
        ob_start();
        extract($data);
        require __DIR__ . '/' . $filename;
        return ob_get_clean();
    }

    а потом в коде страницы пишем
    бизнес-логика
    ...
    $page_html = render_template('page.tpl.php', [
        'data' => $data,
    ]);
    echo render_template('main.tpl.php', [
        'navigaton' => $nav_list,
        'title' => $title,
        'page' => $page_html,
    ];

    где сами шаблоны это
    ...
            <?php foreach ($navigation as $item): ?>
                <li>
                    <a href="<?= e($item['href']); ?>"><?= e($item['title']); ?></a>
                </li>
            <?php endforeach ?>
    Важно! Любой вывод в этих шаблонах должен экранироваться в обязательном порядке (кроме очевидных случаев, когда мы выводим результат рендера).

    Ну и наконец нормальные шаблонизаторы, из которых я горячо рекомендую Twig.
    Главное, что про него надо знать - даже самые зелёные нубы осваивают его без затруднений. И настоятельно рекомендую сразу перейти на него, после того как наиграетесь с решениями на коленке.
    Ответ написан
    9 комментариев
  • Как работают фермы по накрутке?

    hottabxp
    @hottabxp
    Сначала мы жили бедно, а потом нас обокрали..
    Как-то же работают эти фермы и вряд ли в полуручном режиме
    Конечно не в полуручном, а в ручном.

    Окей, гугл - "фермы накрутки лайков китай"
    619cf3769890e898365230.jpeg619cf37c0a830967144880.jpeg

    PS: Есть еще клик-фермы:619cf41feb2ad164609345.jpeg
    Ответ написан
    4 комментария
  • Как получить определённый элемент из бд(через foreach)?

    @galaxy
    Вы несколько раз определяете фукнцию selected() внутри foreach, вот последняя и срабатывает.
    Пишите свой url в value у option, функцию selected() вытащите за пределы foreach:
    <select size="4" id="series_list" name="selection" onchange="selected(this)" disabled>

    var videoPlayer = document.getElementById('video-player');
                
                function selected(sel){
                    videoPlayer.src = sel.options[sel.selectedIndex].value;
                    videoPlayer.play();
                }
    Ответ написан
    1 комментарий
  • Где ошибка в sql запросе?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    1. Ошибка синтаксиса PHP, строка должна быть в кавычках.
    2. Результаты агрегатных функций фильтруются в HAVING, а не во WHERE.
    3. Неверный формат BETWEEN.
    Ответ написан
    3 комментария
  • Как реализовать продукт с изображением которое должно показаться после оплаты Postgresql?

    ky0
    @ky0
    Миллиардер, филантроп, патологический лгун
    Ваши вопросы по большей части похожи на пункты ТЗ - то есть сделать можно по-разному, всё это комплексно должен решать системный архитектор исходя из специфики.

    Изображения, разумеется, в базе хранить не нужно (как и другие плохо индексируемые данные большого объёма).
    Ответ написан
    Комментировать
  • Как реализовать в MySQL топики форума, которые участвуют сразу в нескольких разделах?

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

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

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

    @rPman
    для такой задачи в базу данных записывают не boolean, а время на момент записи, а в select запросе делают
    select now()-start_time<=3 часа from ....
    Ответ написан
    Комментировать
  • Задача на pyhton. Как разобрать формулу?

    @Andy_U
    Теперь читайте про ряды.
    Ответ написан
    Комментировать
  • Задача на pyhton. Как разобрать формулу?

    Vindicar
    @Vindicar
    RTFM!
    nihi1ist, это знак суммы. Читай, эта запись эквивалентна такому:
    sum = 0
    for n in range(0, X): #X - то что над знаком суммы
        V = ... #выражение, зависящее от n - то что справа от знака суммы
        sum += v

    Ну разумеется, до бесконечности цикл прокрутить не получится, и тут в дело вступает точность.
    Тебе нужно вычислить очередное слагаемое в сумме, и если оно по модулю меньше точности, то цикл нужно прервать. Иначе добавить слагаемое к сумме, увеличить n и продолжить цикл.
    Ответ написан
    Комментировать
  • Как объединить 2 записи в одну по признаку?

    Immortal_pony
    @Immortal_pony Куратор тега MySQL
    SELECT 
        ANY_VALUE(id) AS 'id',
        office_id, 
        IF(
            POSITION(',' IN GROUP_CONCAT(employee_id))=0, 
            GROUP_CONCAT(employee_id), 
            SUBSTR(GROUP_CONCAT(employee_id), 1, POSITION(',' IN GROUP_CONCAT(employee_id))-1)
        ) AS 'employee_id_first',
        IF(
            POSITION(',' IN GROUP_CONCAT(employee_id))=0, 
            NULL, 
            SUBSTR(
                RIGHT(GROUP_CONCAT(employee_id), LENGTH(GROUP_CONCAT(employee_id))-POSITION(',' IN GROUP_CONCAT(employee_id))),
                1,
                POSITION(',' IN RIGHT(GROUP_CONCAT(employee_id), LENGTH(GROUP_CONCAT(employee_id))-POSITION(',' IN GROUP_CONCAT(employee_id))))-1
            )
        ) AS 'employee_id_second'
    FROM 
        t
    GROUP BY
        office_id
    Ответ написан
    Комментировать