• MySQL Command Line закрывается после ввода пароля?

    @Akina
    Сетевой и системный админ, SQL-программист.
    Запустите ярлык на CLI из окна CMD и смотрите сообщения. Больше всего похоже на сбой аутентификации.
    Ответ написан
    2 комментария
  • В чем ошибка SQLSTATE[HY093]: Invalid parameter number: number of bound variables does not match number of tokens?

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    1) $params собственно нужен для биндинга, чтобы не вставлять данные прямо в запрос, так как это чревато инъекциями. По этому дебильный совет "просто поменяй на $stmt->execute();" желательно проигнорировать.

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

    3) Даже в таком виде как у вас запрос работать не будет, так как строковые переменные в рамках запроса должны быть в кавычках.

    4) WHERE $email что? Вы вообще понимаете что и для чего пишете? Просто переведя на русский "где емэйл" не кажется вам слегка странной конструкцией? Просто загляните в документацию SQL где описывается WHERE.
    Ответ написан
    Комментировать
  • Есть ли смысл перенести Mysql на другой сервер для ускорения сайта?

    VoidVolker
    @VoidVolker
    Dark side eye. А у нас печеньки! А у вас?
    Нет, смысла нет. Для ускорения работы сайта надо сначала провести исследования проблемы. Для начала однозначно определиться что, где и как именно у вас "медленно открывается". Далее необходимо собрать данные о происходящих процессах - что, где, как и когда работает, а так же какую создает нагрузку на оборудование - процессор, память, сеть, диски и прочее. По результатам данного исследования надо будет найти бутылочное горлышко или несколько и исследовать их более детально и глубоко, чтобы понять как их устранить - программно, аппаратно, организационно и прочее. И вот только после этого уже решать что именно и как именно надо сделать для решения проблемы.
    Ответ написан
    Комментировать
  • Как получить имя переменной из строки?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    Для этого есть массивы
    $strs = [
        '123' => 'один два три',
        '578' => 'пять семь восемь',
        '015' => 'ноль один пять',
    ];
    if (array_key_exists($digit, $strs)) {
        echo $strs[$digit];
    }
    Ответ написан
    3 комментария
  • Может кто-нибудь посоветовать курс по пентесту?

    @Everything_is_bad
    проверку ты уже провалил, не твое это, займись чем-то другим
    Ответ написан
    7 комментариев
  • Как получить часть URI, которая идёт после основного домена?

    @AUser0
    Чем больше знаю, тем лучше понимаю, как мало знаю.
    $_SERVER['REQUEST_URI']
    Поскольку написали много, но ни разу не показали URI запроса.
    Ответ написан
    Комментировать
  • Laravel Request - как работает?

    pickHabr
    @pickHabr
    Костыльных дел мастер
    Потому что у тебя в request1 и в request2 лежит индекс одного и того же объекта https://www.php.net/manual/ru/language.oop5.refere...
    Ответ написан
    24 комментария
  • Функция SUM в sql запросе не работает почему?

    ThunderCat
    @ThunderCat Куратор тега MySQL
    {PHP, MySql, HTML, JS, CSS} developer
    Владею: Html, Css, Php, bd msql, сложные запросы SQL
    Рили???

    Ок, на самом деле решение очевидное, и весьма простое. Во втором запросе вы выбираете не столбец, имя которого будет ассоциироваться с ключом в соответствующем массиве (о чем вам и говорит ошибка), а результат агрегирующей функции, которое в массиве будет иметь совершенно другое имя. Что легко проверяется через var_dump($row).

    Решение - добавить алиас для агрегированного поля.
    Ответ написан
    Комментировать
  • Как синхронизовать бд с другой бд на другом сервере?

    nokimaro
    @nokimaro
    Меня невозможно остановить, если я смогу начать.
    Автоматически синхронизировать - репликация
    https://dev.mysql.com/doc/refman/8.0/en/replicatio...

    В вашем случае так как запись может быть сделана в любую из баз, и они должны быть в синхроне то нужна master-master репликация. Читайте информацию по теме "mysql master master replication".
    Из минусов - запросы на запись (update, insert, delete) будут работать чуть дольше так как придётся дожидаться синхронизации данных. Из плюсов - всё будет работать из коробки как только настроите репликацию, и всё что записано в одну базу сразу же будет доступно в другой и наоборот.
    Ответ написан
    4 комментария
  • Переход с MD5 на SHA256 что нужно сделать чтобы работало)?

    delphinpro
    @delphinpro Куратор тега PHP
    frontend developer
    Решил сделать переход с MD5 на SHA256

    Первая ошибка.
    Переходить нужно сразу на password_hash
    На переходный период реализовать две системы аутентификации. Сначала пробуете по старой (md5), если неудача, то password_verify
    После удачной аутентификации хешируете пароль новым алгоритмом.
    Ответ написан
    Комментировать
  • Как работают рекурсии?

    Vindicar
    @Vindicar
    RTFM!
    Raddzor788,
    Где хранятся все эти значение 1,2,3,4, ведь у моего 'x' нету же звездочки(*х), чтобы собрать столько аргументов.

    Твой x - это несколько разных x. Потому что есть такая вещь как области видимости. Обычно есть область видимости функции (локальная) и глобальная область видимости скрипта. Если функция не видит нужного имени в локальной области - она ищет в глобальной. Если не видит и там - ищет в __builtins__.
    0. По умолчанию есть глобальная область видимости скрипта.
    1. При вызове func(1) создаётся локальная область видимости (скажем, А), в ней создаётся имя x, указывающее на 1.
    2. Отработало условие 1 < 4.
    3. Вызывается func(2). При этом создаётся НОВАЯ локальная область видимости Б (потому что новый вызов функции), в ней создаётся имя x, указывающее на 2.
    4. Отрабатывает условие 2 < 4.
    5. Вызывается func(3). При этом создаётся локальная область видимости В, в ней создаётся имя x, указывающее на 3.
    6. Отрабатывает условие 3 < 4.
    7. Вызывается func(4). При этом создаётся локальная область видимости Г, в ней создаётся имя x, указывающее на 4.
    8. Условие 4 < 4 не отрабатывает. Происходит вызов print(x) - имя x находится в текущей локальной области Г, выводится ассоциированное с ним значение 4. Отрабатывает print(4), происходит возврат из функции, область видимости Г уничтожается.
    9. Происходит вызов print(x) в предыдущем "слое" рекурсии. Текущая локальная область видимости В - в ней имя x связано со значением 3. Отрабатывает print(3), происходит возврат из функции, область видимости В уничтожается.
    10. Происходит вызов print(x) в предыдущем "слое" рекурсии. Текущая локальная область видимости Б - в ней имя x связано со значением 2. Отрабатывает print(2), происходит возврат из функции, область видимости Б уничтожается.
    11. Происходит вызов print(x) в предыдущем "слое" рекурсии. Текущая локальная область видимости А - в ней имя x связано со значением 1. Отрабатывает print(1), происходит возврат из функции, область видимости А уничтожается.
    12. Мы вышли из всех слоёв рекурсии. Мы находимся в теле скрипта и работаем только с глобальной областью видимости.
    Ответ написан
    Комментировать
  • Как решить проблемы с клавиатурой в файловом менеджере far2l в Ubuntu 24.04 в сеансе Wayland?

    unxed
    @unxed Автор вопроса
    Существует несколько способов решения этих проблем:

    1. Вышло обновление, достаточно сделать
    sudo apt update && sudo apt dist-upgrade

    Остальные ответы оставлю для истории.

    2. Оставайтесь на X11

    3. Запускайте far2l с двумя дополнительными параметрами:
    far2l --nodetect=xi --ee

    4. Запустите этот патч:
    sudo perl -pi -e 's/XInputExtension/!InputExtension/g' /usr/lib/far2l/far2l_ttyx.broker

    (использовать параметр --ee всё равно придётся)

    5. Можно взять более свежую версию из Debian:
    mkdir far
    cd far
    wget http://ftp.de.debian.org/debian/pool/main/f/far2l/far2l_2.6.1~beta+ds-1_amd64.deb
    wget http://ftp.de.debian.org/debian/pool/main/f/far2l/far2l-data_2.6.1~beta+ds-1_all.deb
    sudo apt-get install ./*.deb
    apt-cache policy far2l

    Можете использовать тот способ, который вам больше нравится.
    Ответ написан
    1 комментарий
  • Почему ломается передача по ссылке в foreach с указанием оператора опциональной последовательности для массива?

    Adamos
    @Adamos
    Потому что вычисление $a ?? [] имеет результатом копию массива, на нее и ссылается переменная цикла. Оригинальный массив в цикл вообще не попадает.
    Ответ написан
    Комментировать
  • Как сделать авторизацию по двум таблицам в Symfony?

    BoShurik
    @BoShurik Куратор тега Symfony
    Symfony developer
    Если объединять пользователей с разными полями не хочется, то можно поступить проще и использовать Chain User Provider

    Тогда достаточно будет только строчки в конфиге, а сущности будут чище, без лишних связей
    # config/packages/security.yaml
    security:
        # ...
        providers:
            backend_users:
                ldap:
                    # ...
    
            legacy_users:
                entity:
                    # ...
    
            users:
                entity:
                    # ...
    
            all_users:
                chain:
                    providers: ['legacy_users', 'users', 'backend_users']
    Ответ написан
    Комментировать
  • Как сделать авторизацию по двум таблицам в Symfony?

    Разные категории пользователей в Symfony лучше всего организовать при помощи ролей.

    Основная таблица users будет содержать всех ваших пользователей, это проще всего. Там же и будет поле с ролями.

    Для дополнительных полей другой категории пользователей лучше всего создать отдельную таблицу, которая будет связана с основной через связь one-to-one либо one-to-many по id пользователя (посмотрите уроки по Doctrine).

    Однако, если пользователей с этими дополнительными полями будет подавляющее большинство, то можно не усложнять, а смело создавать эти поля в основной таблице users.

    Очень советую досмотреть полностью уроки с symfonycasts.com. Они великолепны, и там точно всё необходимое должно быть.
    Ответ написан
    2 комментария
  • Как хранить баланс пользователя в разных валютах?

    @tukreb
    Вы не должны указывать куда пропали деньги, так как они не должны ни куда пропадать вообще.
    Пользователь выбирает тип валют в которой будет хранить и курс никак на это влиять не должен.
    Если пользователь хочет хранит в нескольких видах валюты, значит храните в нескольких типах валюты.
    Ответ написан
    8 комментариев
  • Объясните CASE WHEN THEN?

    @Akina
    Сетевой и системный админ, SQL-программист.
    ...
    SET view = CASE ad_id WHEN 34 THEN 0
                          WHEN 35 THEN 1 
                          WHEN 36 THEN 2
                          END,
        amount = CASE WHEN ad_id = 36 
                      THEN 466
                      ELSE amount
                      END
    WHERE ad_id  IN (34, 35, 36);
    Ответ написан
    3 комментария
  • Как записать в базу пустое поле?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    - $query = $db->query('INSERT INTO `order`(`user_id`, `articul_id`, `sharpener_id`, `barcode`, `quantity`) VALUES ('.$user_id.','.$articul_id.','.$sharpener_id.','.$barcode.','.$quantity.')');
    + $db->prepare(
    +     'INSERT INTO `order` (`user_id`, `articul_id`, `sharpener_id`, `barcode`, `quantity`)' . 
    +         'VALUES (?, ?, ?, ?, ?)'
    + )->execute([$user_id, $articul_id, $sharpener_id, $barcode, $quantity]);
    Ответ написан
    4 комментария
  • Что интересного можно сделать из промышленного ПК?

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

    mayton2019
    @mayton2019
    Bigdata Engineer
    Да. Такие эксперименты были. Лет 5 назад когда был еще жив sql.ru, один человек продвигал
    модель т.н. квинтетов. Это таблица с 5 полями которая полностью описывала любую
    доменную область. Я к сожалению не могу нигде найти следов описания этой системы
    но возможно это оно https://cyclowiki.org/wiki/QDM . Читайте смотрите.

    Второе. В эпоху новых версий DBMS (Oracle/PG/MySQL) когда мы можем использовать
    JSON/XML внутри ячейки, сама идея EAV теряет смысл. Поле атомарно? Атомарно.
    Значит законы реляционной алгебры мы не нарушаем и JSON совершенно легальный
    тип для реляционок. Хотя лет 30 назад его использование было-бы кощунством
    в БД. Но это можно было списать на жесткую экономию ресурсов и чрезмерную
    математичность моделей Бойса-Кодда. Сегодня все используют JSON и нет никаких
    архитектурных доводов против. Поэтому создавайте NoSQL табличку где есть
    key и есть значение в виде либерального типа документа. Как делают MongoDb, CouchDb.
    И если связать их в иерархию то получится вполне себе те-же самые квинтеты.

    Про EAV лучше забудьте. Их любят преподаватели SQL и теоретики. Но практически EAV
    слишком медленно работает чтобы развивать его в бизнес-приложении или в промышленности.
    Мир тяготеет к упрощению. И поэтому JSON - это упрощение EAV. И работает быстрее.
    Ответ написан
    6 комментариев