Не надо учиться по этим тупым видео про тухлую фаслоль. Так и будешь ведь спотыкаться на каждом шагу
Надо купить нормальную книжу и учить язык нормально, а не думать что ты с помощью одной устаревшей в прошлом веке библиотеки можешь делать сайты.
В данном случае тебе свою фамилию надо добавить в ЗАПРОС, а не сравнивать в пхп.
Ты видел доклад про то как мучают в аду нерадивых разработчиков.
В нормальной БД все будет работать быстрее и без необходимости использовать, прогревать и инвалидировать кэш.
Вместо того чтобы смотреть доклады, тебе надо купить букварь по базам данных.
Технически размер файла не имеет значения, он может быть сколь угодно большим.
Но вот с точки зрения архитектуры класс размером 300Кб - это ад. Который наглядно показывает, что внутри не ООП, а голимая процедурщина.
Есть правило 30 - в классе должно быть не больше 30 методов и размер каждого метода не больше 30 строк. Но при этом не надо воспринимать это как догму. Большинство классов должно быть сильно меньше - 3-5 методов по 5-10 строк.
Но опять же это всё не самоцель и не надо устраивать из этого карго культ, разибвая свои классы на более мелкие чтобы гордиться "я офигенный оопэ программист". Тут на самом деле не размер имеет значение. Просто если ты умеешь в ооп, умеешь декомпозировать и делить ответственность, то у тебя классы и методы сами станут маленькими, отвечающими за четкий строго определенный круг задач.
Вопрос с подвохом.
Потому что "данные, предоставленные пользователем" может означать что угодно. Поэтому формулировать надо так:
Надо использовать параметризованный запрос, если в запросе не используются переменные?
И тогда ответ будет простой и очевидный - нет, не надо.
Это очень простое правило: используются в запросе переменные? Используем подготовленный запрос и передаем через плейсхолдер. Не используются? Можно использовать query()
В качестве исключения, в запрос можно включать переменные, значения которых явно прописаны в коде, и не меняются.
Робот - это браузер. Разницы нет никакой.
Если все читают, а робот нет - это проблемы либо робота, либо криворукого хостера, который почему-то не пускает определенные браузеры.
Для исправления проблемы вместо невнятного "ниможит, насяльника" нужно четкое описание проблемы - айпи робота, юзерагент, сообщение об ошибке, точное время запроса. Потом с этими данными смотреть логи.
Хотя бы какая ошибка выдается, этот банк может сказать? 404? 403? 500? Робот взрывается и убивает осколками все живое врадиусе 5 метров?
А вообще если такие вопросы возникают, то скорее всего ООП применяется не по назначению, и внутри голимая процедурщина, глазированная красивыми словами "паблик" и "статик". И лучшим решением будет не пытаться изображать из себя программиста, а писать по-старинке, функциями внутри которых использовать global. принципиально для этого кода разницы не будет.
Если это путанное объяснение означает что пользователь переходит с сайта А на сайт Б, там заполняет форму, в которой экшеном стоит скрипт на сайте А, то обрабатывать как обычно.
Если задача какая-то другая, то надо родить нормальное описание.
Но для начала надо открыть для себя, что "форма на сайте" не бывает. Форма всегда в браузере. С какого сайта форму браузер загрузил - совершенно неважно. Важно на какой сайт ведет экшен формы.
Нормальная структура. Только писать в таблице parentCategory_id глупо, по двум причинам. Во-первых, у товара нет никакой родительской категории. А есть просто категория. Во вторых, мешать стили именования - это как ходить в гразных штанах. Традиционно для баз данных используется змеиный стиль в нижнем регистре. Поэтому просто category_id
Второй пункт относится и к таблице категорий тоже. поэтому просто parent_id
Как получать все дочерние категории - в общем без разницы. можно с рекурсией, но чтобы было совсем просто, я предлагаю тупо добавить поле path, в котором печечислить все родительские котегории через точку. Например для жидкого туалетного мыла path будет 1.2.3.4.6
соответственно, если клиент ждет мыла, то получаем path из мыла, и пишем в запросе WHERE path like "1.2.%"
Заодно и выводить сортировать дерево категорий моно будет простой сортировкой order by path
простой джойн между всеми тремя таблицами, осортировать по номеру заказа
выводить в цикле
информация о заказе будет повторяться, поэтому надо запоминать заказ, и добавить условие - если заказ поменялся, то вывести по нему информацию.
Сайта у нас ещё нет.
Базы данных нет.
Статей нет.
Известной личности нет.
Офигиллиарда лайков нет.
Но зато полные штаны беспокойства, А ВДРУГ БАЗА НЕ СПРАВИЦА!!!
В порядке конструктива.
Купи себе пару хороших книжек, а лучше пойди на нормальные курсы, которые от Авито, не помню, как они называются. Потом пойди поработать в нормальную контору, где можно на практике разобраться, что такое база данных и с какого конца к ней подходят. Не в смысле нагрузки, а чтобы и мысли не возникало про дичь типа таблиц вида likes_for_userid_847192.
И годков через 5 можешь начинать задумываться о вопросе, "что будет если в базе будет 1 000 000 000 0000 00000 000000!!!111адинадин записей".
Я думаю, самым разумным решением будет писать эти массивы в базу и сравнивать простым запросом. Именно так в общем случае решается задача "сравнение двух больших массивов данных на РНР." Конкретную же реализацию можно будет предложить только если будет конкретный вопрос, без "может быть " и "например".
Да, память в БД тоже не бесплатная, но тут надо уже определиться - или мы хотим ворочать гигазы варезов, или сидеть на копеечном впс с 500 метрами памяти. Одновременно не получится.
Можно конечно извернуться и скомпилить специальное расширение, которое как раз и предназначается для работы с иллимонами элементов, но опять же - все зависит от возможностей и потребностей.