Задать вопрос
Профиль пользователя заблокирован сроком с 10 апреля 2022 г. и навсегда по причине: систематические нарушения правил сервиса
  • Как правильно сделать sql запрос?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    Из комментов надо выбирать не по id, а по post_id.
    В таблице комментариев должно быть поле с ид поста. И дальше просто выбирать все нужные комментарии по этому полю

    Джойн здесь будет лишним. проще сделать два запроса - к таблице постов и к таблице комментариев.
    Ответ написан
    4 комментария
  • Не могу понять суть реляционных баз данных. Ведь для вывода данных придется делать 2 запроса в разные таблицы?

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

    Достаточно 1 раз занять себя этой увлекательной процедурой, чтобы навсегда забыть про дублирование данных в бд
    Ответ написан
    Комментировать
  • Memory_get_usage на хостинге и Денвере отличаются показатели, Почему?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    очевидно же - разрядность сборки РНР.
    64-битная потребляет в 2 раза больше памяти, чем 32-битная
    Ответ написан
  • Каков самый быстрый способ вывести данные из нескольких таблиц Mysql в одном списке с сортировкой по определенному полю?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    выкинуть 4 сервера, оставить один
    сделать единую таблицу с полями "Номер", "Название" или "Дата", название и идентификатор в другой таблице
    сделать нужную выборку из этой таблицы
    подгрузить данные из доп таблиц по ид
    Ответ написан
    7 комментариев
  • Почему на продакшене из базы возвращается строка а не число?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    Чтобы получить число, нужно чтобы были соблюдены несколько условий

    - установлен драйвер mysqlnd
    - отключена эмуляция подготовленных выражений в PDO
    - используется подготовленный запрос.
    Ответ написан
    Комментировать
  • Как передать ajax-запрос из цикла?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    Ответ написан
    Комментировать
  • Почему не смотря на текст до заголовка я не ловлю никаких ошибок?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    https://www.php.net/manual/ru/outcontrol.configura...

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

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    1. массив объединяется в строку без разделителя
    2. результат шифруется методом sha1 без всяких "ключей", с бинарным выводом
    3. результат кодируется base64
    4. к результату добавляется секретный ключ спереди и сзади
    5. результат шифруется методом md5 с бинарным выводом
    6. результат кодируется base64

    В целом этот этот алгоритм выглядит так, как будто его составлял пятиклассник, где-то краем уха слашавший про хэширование. Я бы не доверял платёжной системе, которая подписывает транзакции таким способом.
    Ответ написан
    1 комментарий
  • Как выполнить команду в терминале php на FreeBSD?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    я так понимаю из-за прав

    Самое главное, что надо понимать о программировании, это что никогда не надо понимать.
    А всегда надо знать точно.
    И уж тем более не надо начинать метаться и совершать хаотичные телодвижения, типа установки sudo, прописывания путей и прочего, исходя только из понимания.

    Если что-то идёт не так, то система всегда сообщает тебе об этом. И надо всего лишь взять это сообщение и прочитать. И потом исправить конкретную ошибку.

    Вместо неудобной exec используем нормальную shell_exec().
    чтобы видеть ошибки, добавляем в конце команды 2>&1

    $out = shell_exec("sox media/60847/intro.wav -r 8000 -c 1 media/60847/intro.gsm 2>&1");


    в out будет консольный вывод, в том числе ошибки.
    Читаешь ошибку и исправляешь
    Ответ написан
    Комментировать
  • Проблема с SQL иньекциями. Не работает с 2 запросами в бд. Почему?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    Это да, косяк mysqli, совершенно неочевиное поведение. Стейтмент не позволяет использовать станартный фетч. Нужно сначала получить результат запроса, а потом уже фетчить.

    Код пишу в нормальном синтаксисе, потому что от вида этих бесконечных mysqli_stmt_bind_param_stmt_execute_mysqli_stmt_param_fetch_execute у меня начинают болеть зубы.

    $stmt = $bd->prepare("SELECT * FROM `users` WHERE id=? ");
    $stmt->bind_param('i', $id); 
    $stmt->execute();
    $res = $stmt->get_result(); // вот это
    $row = $res->fetch_assoc();


    Вообще, пользоваться чистым синтаксисом mysqli может только мазохист. Поскольку это низкоуровневая библиотека, которая раскладывает каждую задачу на кучу мелких операций. Все эти операции нужны, без них нельзя обойтись. Но совершенно не оябзательно как попугай постоянно долдонить их в каждом запросе. Можно написать функцию, которая будет выполнять их внутри.
    $row = prepared_select($bd, "SELECT * FROM `users` WHERE id=?", [$id])->fetch_assoc();


    Но самое, конечно, смешное - это что SELECT запрос тебе здесь не нужен.
    Базы данных работают совсем по-другому. Тебе не надо перекладывать данные из одной таблички в другую. Твоя БД потому называтся реляционной, что в ней можно связывать таблицы. И получать данные на основании связей. То есть в таблице messages не нужны ни имя. ни аватарка. Нужен только id юзера. А все его причиндалы ты получишь потом, при выводе, из таблицы users, используй JOIN запрос.
    Ответ написан
    Комментировать
  • Как сделать редирект и передать в него cookie?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    Никак.

    Это специально сделано, чтобы такие хитрож...умные не могли выдать себя за другой сайт.
    Куки может поставить только оригинальный сайт, и клиент должен запросить его сам.
    Ответ написан
    Комментировать
  • Почему для SSR проекта на бэк берут НЕ Node.js?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    Затем, что веб состоит не из одних только мусорных лендингов-однодневок на SPA.

    У сайтов, несущих хоть какой-то смысл, а не состоящих из блестючей мишуры чуть боле чуть полностью, бизнес-логика занимает 90% кода. С фронта этого не видно, и поэтому естественно кажется бэкенд - это такой же "фигак-фигак - и в продакшен".
    Практика же показывает, что сляпять не получается. Нужна инфраструктура, нужны инструменты, нужно масштабирование и балансировка. Нужна такая страшная и непонятная штука как база данных. Нужны специалисты, которые со всем этим умеют управляться. И как-то так получается, что для бэкенда используется не модный баззворд, а проверенное рабочее окружение.
    Ответ написан
    2 комментария
  • Как получить все ID вышестоящих категорий?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    В цикле.
    Ответ написан
    Комментировать
  • Как изменять значение в БД по нажатию кнопки?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    Никак

    При нажатии на кнопку в браузере нельзя изменить значение в бд.
    При нажатии на кнопку можно только отправить запрос в пхп.
    А уже в пхп можно выполнить запрос к бд.
    То есть это два действия, а не одно. И выполнять их надо по очереди.
    Именно поэтому у тебя не получается. Потому что ты пытаешься делать два дела одновременно. Делай их по очереди.
    Ответ написан
    Комментировать
  • Как сделать выборку с js массива в mysql, с помощью php?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    Столбец param не должен иметь данные "такого типа".
    Надо переделывать этот ужас, чтобы столбец param стал таблицей param
    Ответ написан
  • Обрабатывает ли php условие полностью?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    проверить своё предположение ты можешь очень просто - всего лишь внеся ошибку синтаксиса в код внутри else. Если РНР "не читает" его, то ошибка не появится.

    Но, разумеется, ошибка будет. потому что у тебя неверное представление о работе интерпретаторов.

    Разумеется, РНР сначала читает весь код. И только после этого начинает исполнение.
    Чтобы не "увеличивать загрузку страницы" существует такая вещь как "опкод-кэш", который сохраняет уже "прочитанный" РНР код в памяти.
    Ответ написан
    1 комментарий
  • SQL-ошибка: Illegal mix of collations?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    Я думаю, причина в том, что "все таблицы и поля у меня в кодировке utf8_general_ci" - это в нектором роде фантазия, не совсем совпадающая с действительностью.

    Ну и надо не забыть установить кодировку при соединении из пхп.
    Ответ написан
  • Закрыть вкладку после target="_blank"?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    РНР не закрывает вкладки. И даже не открывает. РНР работает на сервере.
    А вкладки находятся в браузере.
    Ответ написан
    Комментировать
  • Как автоматически экранировать кавычки в HTML?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    Ты мучаешься уже не первый год, но так и не научился отличать скобки от кавычек и JS от HTML.
    Не говоря уже о том, чтобы научиться польоваться гуглем.
    Не говоря уже о том, что из каждого утюга, в каждой книжке, в каждом ответе на тостере написано, что вывод из пхп в хтмл надо всегда в обязательном порядке прогонять через htmlspecialchars().

    Я знаю, тебе уже много раз предлагали оставить это безнадежное занятие, но всё же. Может быть как раз сейчас и наступил тот момент когда стоит подумать о смене призвания на востребованную профессию подавальщика в макдональдсе?
    Ответ написан
    6 комментариев