• Как при оформлении отправить в базу заказ с несколькими товарами?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    1 таблица - заказы (id, дата, статус, id_клиента, ...)
    2 таблица - товары в заказах (id_заказа, id_товара, количество, цена)
    Ответ написан
    2 комментария
  • Необходимо вывести список товаров числом?

    alexey-m-ukolov
    @alexey-m-ukolov Куратор тега PHP
    select count(*) from product

    Это называется не "вывести товары одним числом", а "получить количество строк в таблице". И по корректной формулировке ответ в поисковике находится за два клика. Как говорится - в правильно сформулированном вопросе уже заложена половина ответа. А программирование - дело точное, и формулировки в нём тоже должны быть точные.
    Ответ написан
  • Как получить нужные id из mysql?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    GROUP BY, MAX(), HAVING
    Ответ написан
    Комментировать
  • Как обновить сразу все записи с уникальным ключом?

    @Akina
    Сетевой и системный админ, SQL-программист.
    create table test(
      id SERIAL PRIMARY KEY,
      num int,
      t text,
      constraint u_constrainte unique (num, t) DEFERRABLE 
    )

    https://dbfiddle.uk/VuwdSZSH

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

    Нет.
    Ответ написан
    3 комментария
  • Как получить одно из значений ответа на запрос?

    ValeriuCutebov
    @ValeriuCutebov
    Чтобы получить значение transaction_status из ответа на запрос, вам нужно сначала декодировать JSON-строку в массив PHP. Это можно сделать с помощью функции json_decode:

    $response = '{"status":"success","1":{"transaction":"8025400","email":"Не указана","amount":"21.38","currency":"RUB","currency_amount":"20.00","comission_percent":"6.90","comission_fixed":"0.00","amount_profit":"20.00","method":"Не выбран","payment_id":"1618399991","description":"Покупка доступа на 2 дня","date":"2023-03-13 19:40:46","pay_date":"2023-03-13 19:40:46","transaction_status":"0","custom_fields":"null","webhook_status":"0","webhook_amount":"0"}}';
    $data = json_decode($response, true);
    $transaction_status = $data["1"]["transaction_status"];

    Затем вы можете использовать переменную $transaction_status в своих условиях if / else:

    if ($transaction_status == 0) {
      echo 'Статус транзакции = 0';
      exit(0);
    } else {
      echo 'Статус транзакции не равен 0';
    }

    Надеюсь, это поможет!
    Ответ написан
    5 комментариев
  • Можно ли написать SQL запрос с выражением в WHERE и в SELECT, но без повторения этого выражения и без вложенного SELECT?

    @alexalexes
    Но будет 2 вычисления MD5

    Выражения в select вычисляются после того, как отобраны строки по условиям в where.
    Если выходная выборка совсем небольшая, то оптимизировать работу функции в колонках не нужно - это экономия на спичках.
    Другое дело, если вы используете вычисляемую функцию в where. Чтобы она быстро работала есть 3 пути:
    1. Если функция вычисляется из данных, которые не зависят от контекста запроса, то нужно отказаться от этой функции, которая вычисляется при каждом запросе. Нужно хранить ее результат в отдельном атрибуте.
    2. Сделать индекс с использованием этой функции на атрибуте, тогда при использовании этой же функции в where сработает индекс.
    3. Если есть возможность, то нужно так преобразовать выражение where, чтобы все аргументы вычисляемой функции или выражения (складываем, вычитаем, умножаем делим, case-им) оказались входными параметрами или константами. Чтобы такое произошло, нужна обратная функция для md5 - reverse_md5. Но такой функции по математическим соображениям не существует.
    Иначе выражение бы выглядело так:
    where value = reverse_md5(:hache)
    Ответ написан
    1 комментарий
  • Как сделать запрос в sqlite?

    trapwalker
    @trapwalker
    Программист, энтузиаст
    self.cursor.execute("SELECT * FROM table1 WHERE colum1 LIKE ?", (f'%{age}%',)).fetchmany(1)
    Ответ написан
    1 комментарий
  • Почему PHP так сравнивает строку и число?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    PHP 8.0
    If both operands are numeric strings, or one operand is a number and the other one is a numeric string, then the comparison is done numerically.

    Более ранние версии PHP:
    If a string is compared to a number or a numeric string then the string was converted to a number before performing the comparison.

    То есть, когда вы в 7.4 сравниваете строку с числом, то строка в любом случае приводится к числу. В 8.0, при сравнении нечисловой строки с числом, число будет приведено к строке.
    А дальше у вас, похоже, проблема XY. Вам надо искать не "как сравнить через ==", а как решить исходную задачу, для которой нужно такое сравнение.
    Ответ написан
    Комментировать
  • Может ли MySQL глючить?

    ThunderCat
    @ThunderCat Куратор тега MySQL
    {PHP, MySql, HTML, JS, CSS} developer
    Все работает в 99% нормально, но иногда проскакивает выдача другой строки, не с таким полем, по которому ищем.
    Это просто значит 99% проблема в коде. Логируйте в файл запрос, параметры и результат выполнения, скорее всего логика работает не так как вы задумали. Как только словите ошибку - смотрите свой лог, наверняка запрос будет отличаться от ожидаемого.
    Ответ написан
    2 комментария
  • Зачем надо (1) в COUNT?

    OrlovEvgenii
    @OrlovEvgenii
    golang developer / DevOps
    В SQL, функция COUNT используется для подсчета количества строк, которые соответствуют определенному условию. Она может принимать различные аргументы, в том числе числовые значения, столбцы, выражения и т.д.

    В данном случае, в качестве аргумента COUNT используется число 1. Однако, это значение не имеет никакого значения для подсчета количества строк в таблице. Оно выбрано скорее для упрощения запроса и ускорения его выполнения. Например, в некоторых базах данных, использование 1 вместо столбца имеет меньший размер и может ускорить выполнение запроса.

    Поэтому, если вам нужно просто подсчитать количество строк в таблице, можно использовать любой аргумент внутри функции COUNT, в том числе и 1. Однако, в общем случае, для подсчета количества строк можно использовать и другие конструкции, например, COUNT(*) или COUNT(имя_столбца).
    Ответ написан
    4 комментария
  • Можно ли разместить бзнес-логику в модулях NGINX?

    dimonchik2013
    @dimonchik2013
    non progredi est regredi
    (т.е. допустим ли такой подход в NGINX)

    допустИм, конечно, LUA, опять же, или родной
    ps: Язык разработки C/C++.


    Гошники не парятся и так и делают (драйвер базы, осносной скрипт и вебсервер в один файл), правда, могут за сам Nginx забыть и юзать свое, по тестам даже более быстрое...

    проблемы начнутся когда понадобится поддерживать, масштабировать, или когда неудачно обновится nginx
    Гошники выплывут, а вот Ваш подход....
    Ответ написан
    Комментировать
  • Почему функция обрабатывается лишь раз?

    karabanov
    @karabanov
    Системный администратор
    500 (Internal Server Error) - это 99% необработанное исключение в PHP скрипте, посмотри в error.log и увидишь там ответ на свой вопрос.
    Ответ написан
    Комментировать
  • При каких знаниях первого яп можно начинать изучение второго?

    @Drno
    Когда угодно
    Ответ написан
    Комментировать
  • Как заполнить колонку в таблице уникальными значениями?

    AndrewBoeing
    @AndrewBoeing
    Начинающий и упорный программист )
    Вы можете использовать функцию UUID() в MySQL, чтобы сгенерировать уникальный ключ для каждого пользователя при регистрации. Эта функция генерирует уникальный идентификатор UUID (Universal Unique Identifier) в формате 36-значной строки, состоящей из цифр и букв.

    Вы можете добавить новую колонку unique_key в таблицу xf_user и сделать ее UNIQUE, чтобы гарантировать уникальность значений. Затем при каждой регистрации вы можете генерировать новый уникальный ключ и добавлять его в эту колонку.

    Пример SQL-запроса для добавления колонки и заполнения ее значениями:

    ALTER TABLE xf_user ADD unique_key VARCHAR(36) UNIQUE;
    
    UPDATE xf_user SET unique_key = UUID();


    Это создаст новую колонку unique_key в таблице xf_user и заполнит ее уникальными значениями для всех пользователей, используя функцию UUID(). Вы можете добавить этот код в свой скрипт регистрации, чтобы генерировать уникальный ключ для каждого нового пользователя.
    Ответ написан
    8 комментариев
  • Есть ли простое и быстрое решение определить, что фраза изменена незначительно?

    AgentSmith
    @AgentSmith
    Это мой правильный ответ на твой вопрос
    это классическая задача. Решается через расстояние Левенштейна
    Ответ написан
    1 комментарий
  • Дублирующиеся столбцы - это плохо?

    @mletov
    Не нужна таблица "Список активных клиентов"
    Только таблица "Клиенты" и в ней "Дата активации" и "Дата деактивации"
    Если дата деактивации пустая - клиент активен.
    Если выборка "Список активных клиентов" используется часто - можно сделать вьюху.
    Ответ написан
    Комментировать
  • Как оптимизировать задачу?

    Lorien_Elf
    @Lorien_Elf
    Keep calm and drop database
    Я сварщик ненастоящий, но вижу два пути:
    - Отсылать на сервер данные массивом, а не поштучно.
    - Отправлять штучные запросы параллельно.

    Оба решения требуют чтения доков на этот сервис или разговора с местными инженерами. Так как первый может не поддерживаться, а второй может вас забанить за спам :)
    Ответ написан
    Комментировать
  • Как сформировать запрос?

    tsklab
    @tsklab Куратор тега SQL Server
    Здесь отвечаю на вопросы.
    SELECT COUNT ( DISTINCT CaseID )
      FROM Instance
      WHERE NOT [CaseID] IN ( SELECT [CaseID] FROM Instance WHERE [Level] > 1 )
    Ответ написан
    Комментировать
  • В чем причина ошибки?

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    1)
    expects parameter 1 to be mysqli_result, bool given
    ожидаем результат запроса, но получаем булеан. Почему? 99% кривой запрос, но этого мы не узнаем, так как кода нету. Для нормального отображения ошибок запросов, нужно добавить после соединения
    mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);

    2)
    Здесь уже проблема с хедером
    Да нет, с хедером все ок. Проблема что тут его уже нельзя отправить, так как вы что-то вывели в браузер (скорее всего как раз ошибку из п.1). Что легко гуглится (Результатов: примерно 6 170 000).
    Ответ написан