Ответы пользователя по тегу MySQL
  • Как правильно выполнить зарос, начиная с указанного ID элемента?

    ThunderCat
    @ThunderCat Куратор тега MySQL
    {PHP, MySql, HTML, JS, CSS} developer
    Какой то непонятный вопрос, точнее странный способ выбирать следующие N постов. Способ сортировки НИКАК не влияет на следующие 10, точнее это не ваша забота. В случае апи я указываю метод сортировки и страницу, так как апи НЕ ЗНАЕТ где и как я остановился, к нему приходит запрос "отдать страницу 4 с сортировкой по рейтингу", что должно вызвать у вас sql
    SELECT * FROM `posts` 
    WHERE 1 
    ORDER BY `rating` DESC 
    LIMIT 40,10

    Все, результат отдать пользователю. Если следующим запросом к апи будет 5 страница с сортировкой по дате - отдаете 5 страницу с сортировкой по дате.

    UPD:
    Все по порядку как положено (AUTO INCREMENT)
    и тут посты с ид 5 и 12 удаляются, и - опа, не по порядку (
    Ответ написан
    7 комментариев
  • Как отправить сообщение на локальный сервер?

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    Ну, купи "нелокальный сервер" где нибудь у хостера, далее напиши на чем то серверсайд(нода, пых, питон...), создай базу данных(например MySQL), далее на фронтэнд на яваскрипте нужно будет уже клиентскую часть написать... Ну и все в принципе, делов то...
    Ответ написан
  • Не работает скрипт php?

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    Самое логичное предположение:
    В принципе код должен проверять данные из какого-то парсинга(не суть какого), в котором есть свои значения, отвечающие за уникальность товарной единицы(?), например артикул или штрихкод, проверять поле unique_id, в которое оно вносится, и если таковое уже есть делать апдейт. Все бы шло хорошо(ну, в меру, код действительно такой себе), но какой-то вася отвечающий за разработку бд это поле тупо пропустил при создании, а может похерилось при переносе, или из бэкапа не ту версию подняли, короче это текстовое поле ушло в горы.

    Выход - добавьте поле в таблицу сами(только бэкапы сделайте), скорее всего что то типа:
    ALTER TABLE `tablename` ADD `unique_id` VARCHAR(24) NULL , ADD INDEX (`unique_id`);
    Ответ написан
    3 комментария
  • Ошибка с выводом переменной?

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    1) $id = $_GET['edit']; здесь $id в итоге может быть вообще пустой, или с шикарным sql инжектом.
    2)
    $get = mysqli_query($db, "SELECT * FROM users WHERE id = '$id'");
    можно только надеяться что выше есть объявление $db

    3)$str = mysqli_fetch_array($get); неплохо бы проверить что запрос что-то вернул вообще
    4) if(isset($_GET['edit'])) если это условие не выполняется, переменная $str вообще нигде не будет создана.

    ниже даже смысла смотреть нет, все то же самое, в лучших традициях гуанокодинга.
    Ответ написан
  • Как вывести переменную из if?

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    Я понимаю что эта переменная видна только в if. Как ее вывести?

    Дело не в том что она "видна" в иф, дело в том что если иф не выполняется, то эта переменная вообще не будет существовать, соответственно вывод ее ниже выдаст варнинг - нет переменной. Вариантов 2:
    1) более правильно все используемые переменные определять перед исполнением скриптов(как советует Михаил Братеньков). Нормальные редакторы(пхпсторм например) такие куски кода определяет сразу.
    2) Более кривое решение - в месте использования переменной для вывода проверять ее существование(более менее правильный вариант), или "засобачить" переменную(<?php echo @$dif; ?> - совсем кривой подход), такой подход оправдан только в ограниченном ряде случаев, например если много переменных могут быть не определены и код нужно рефакторить, но некогда.
    Ответ написан
    2 комментария
  • Как выбрать из mysql последние 25 записей?

    ThunderCat
    @ThunderCat Куратор тега MySQL
    {PHP, MySql, HTML, JS, CSS} developer
    SELECT  * FROM( 
       SELECT  
           message_in_the_chat.write_data write_data,
           users.login,
    ......
    ORDER BY `write_data`  DESC LIMIT 25
    )  sub
    ORDER BY sub.write_data  ASC
    Ответ написан
    2 комментария
  • Как реализовать запрос поиска максимального совпадения?

    ThunderCat
    @ThunderCat Куратор тега MySQL
    {PHP, MySql, HTML, JS, CSS} developer
    В рамках вашей задачи проще сделать что то типа
    $name = 'Иванов Иван Иванович';
    $name  = explode(' ',$name);
    //....
    $sql = "
    select * from `users`
    where `fullname` like 'Иванов %' 
    and like '% Иван %' ";
    Ответ написан
    Комментировать
  • Почему происходит ошибка при миграции базы данных?

    ThunderCat
    @ThunderCat Куратор тега MySQL
    {PHP, MySql, HTML, JS, CSS} developer
    Access denied for user 'shop'@'localhost'

    'username' => 'fedorov_shop',

    конфиги? Поиск по строке в проекте?

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

    ThunderCat
    @ThunderCat Куратор тега MySQL
    {PHP, MySql, HTML, JS, CSS} developer
    Так делать не надо. Если нужно поле которое будет у вас в диапазоне 1-100 - добавьте его отдельно, первичный индексный автоинкрементный ключ не для этого.

    что заставляет перебирать все 1000 записей, а WHERE id > 1000 LIMIT 10, что не заставляет перебирать все 1000 записей
    У вас нет никакого понятия как работают индексы, по этому вы думаете что так будет быстрее. Хотя логика подсказывает что за 20+ лет существования реляционных бд наверняка при необходимости повысить производительность до такой опции бы давно додумались и она была бы распространена, но почему то такого не случилось... Это по тому что достаточно каждый день выпивать по чайной ложке прочитать как работают индексы, и все встанет на свои места.
    Ответ написан
    Комментировать
  • Как переделать авторизацию пользователей?

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    1) нельзя хранить пароли в открытом виде, используйте password_hash()
    2) Для хеширования паролей хорошей практикой считается предварительно "соленые" значения
    3) для проверки используйте password_verify(), алгоритм простой и легко гуглится, например вот здесь есть одна из реализаций
    Ответ написан
  • Как правильно вывести историю диалога двух пользователей?

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    Как из этой таблицы выбрать историю диалога когда известен id отправителя, например 1

    Историю диалога(одного) можно выбрать имея 2 идентификатора - пользователя_1 и пользователя_2.
    Историю переписок(всех конкретного пользователя) можно получить используя только 1 id - данного пользователя.
    Историю переписок(всех конкретного пользователя, где этот пользователь именно отправитель) можно получить используя только 1 id - данного пользователя.
    Вам что из этого надо?
    Ответ написан
  • Как выполнить LEFT JOIN с условием?

    ThunderCat
    @ThunderCat Куратор тега MySQL
    {PHP, MySql, HTML, JS, CSS} developer
    Если бы нужно было определить прочел ли пользователь сообщение, был бы смысл делать выборку именно как у вас, но указав в полях возврата mr.`user_id`, который был бы либо айди, либо нулл. Если же у вас МНОГО людей в чате - тогда правильнее будет сделать так:
    SELECT m.`id`, m.`message`, mr.`message_id` status
    FROM `messages` m
    LEFT JOIN (
          select `message_id` 
          from `messages_read`
          where `user_id` = 111
    ) mr 
    ON mr.`message_id` = m.`id` 
    WHERE m.`chat_id` = 12
    Ответ написан
    Комментировать
  • Как вывести дату из базы данных mysql?

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    strtotime()
    date(), в частности параметр "М"
    Ответ написан
    Комментировать
  • MySQL 8.0.16 Некорректное поведение с curdate?

    ThunderCat
    @ThunderCat Куратор тега MySQL
    {PHP, MySql, HTML, JS, CSS} developer
    Проблема в том чт инициализация должна быть константой
    ...
    `period` date NOT NULL DEFAULT (CURRENT_DATE),
    ....

    Должно работать
    Ответ написан
  • Как правильно сделать LIKE запрос?

    ThunderCat
    @ThunderCat Куратор тега MySQL
    {PHP, MySql, HTML, JS, CSS} developer
    в целом мне видется куча возможных проблем, основная, конечно же, в том что вы не получите нормального ответа от сервера, если у вас мешанина из разных кодировок в поле где 1 кодировка. Так же неизвестно какая кодировка установлена для соединения. ЕМНИП пробелы могут быть разные, особенно для utf кодировок, так что на самом простом варианте у вас все посыпется(точнее уже). Имхо проще все отконвертить в утф 1 раз и настроить нормальное сохранение(например вставив iconv в 3-4 места в коде), чем продолжать колоться, но жрать кактус.
    Ответ написан
  • Уникальный номер при генерации счета на оплату, как сделать?

    ThunderCat
    @ThunderCat Куратор тега MySQL
    {PHP, MySql, HTML, JS, CSS} developer
    но дату и номер сделать не понимаю как

    - дата - читать date() и формат хранения даты в
    - номер - если все счета будут со сквозной нумерацией независимо от месяца/года - читайте про автоинкрементные поля MySql. Если нумерация не сквозная, а допустим по месяцам - сначала выборка счета с максимальным номером за текущий месяц, затем инсерт с этим номером+1.
    Ответ написан
    Комментировать
  • Какие преимущества и недостатки разделение одной базы данных на несколько?

    ThunderCat
    @ThunderCat Куратор тега MySQL
    {PHP, MySql, HTML, JS, CSS} developer
    Я тут подитожу
    С какими проблемами я могу столкнуться, если решу хранить данные каждого модуля в отдельной базе данных?

    1) JOIN между таблицами будет мягко говоря затруднителен
    2) Мелочи вроде поднятия N соединений вместо одного
    3) В конфигах держать соответственно N настроек
    4) соединение - эта операция нифига не бесплатная, как впрочем и отсоединение
    5) Есть подозрение что с миграциями тоже не все будет гладко и шелковисто
    6) Консистентность без транзакций - отдельная попаболь.

    Выгоды ровно ноль, во всяком случае я не смог придумать ни одного аргумента про.
    Ответ написан
    Комментировать
  • Mysql Дублирующаяся запись по ключу 'PRIMARY', как исправить ошибку?

    ThunderCat
    @ThunderCat Куратор тега MySQL
    {PHP, MySql, HTML, JS, CSS} developer
    ALTER TABLE your_table AUTO_INCREMENT = максимальный_ид;
    Ответ написан
    Комментировать
  • MYSQL: скорость запросов на локальной машине и сервере. В чем отличия?

    ThunderCat
    @ThunderCat Куратор тега MySQL
    {PHP, MySql, HTML, JS, CSS} developer
    Во первых - explain
    Во вторых - смотрите настройки мускуля, вполне возможно что памяти например на запрос выделено мало и сложные выборки не помещаются в память, или наоборот, на локале выбрка кэшируется на более долгий срок и запрос у вас всегда "горячий".
    Ответ написан
  • Как делаются таблицы для категорий и их подкатегорий?

    ThunderCat
    @ThunderCat Куратор тега MySQL
    {PHP, MySql, HTML, JS, CSS} developer
    Читать Nested sets
    Ответ написан
    1 комментарий