polak228, "в функцию поступают фильтрованные данные" - это и есть одна из самых больших ошибок.
я конечно посмотрю, поскольку мне интересно, какой конкретно вариант говнокода у вас применён из тех что я знаю, но могу вас заверить, что ни один из них не является правильным решением.
Это не наезд, а констатация факта.
$user = mysqli_fetch_assoc(
mysqli_query($this -> db -> connect(),
"SELECT `password` FROM `users` WHERE `login` = '$login' LIMIT 1;"
)
);
Вам надо не архитектуру учить, а базовый синтаксис языка
Здесь в каждой строчке кода по ошибке.
Потренируйтесь сначала на кошках. Напишите класс для работы с БД, чтобы он хотя бы не выдавал ошибок при работе и в нем не было SQL инъекций хотя бы на таких примитивных запросах.
А потом уже замахивайтесь на интерфейсы.
Странно.
В предыдущих вопросах методы, интерфейсы, архитектура. И вдруг "начало каждой страницы".
Такое ощущение, что код, который вы пишете в реальности, очень далёк от тех вопросов, которые вы задаёте.
Но в общем и целом, если вы оперируете понятиями "в начале каждой страницы делать проверку на состояние сессии", то так и делать.
IvanN777, всё это надо писать в вопросе. Структуру таблицы, индексы, эксплейн запроса без джойна и с ним.
И тогда вам напишут нормальный ответ. Основанный на фактах. Возможно подойдет и временная таблица. Но скорее всего она не понадобится.
А сейчас у вас вопрос наугад и ответ наугад.
если получается 5-10 строк, то селективность по определению высокая.
ещё раз. ваш ответ - типичная чушь с форума, когда на вопрос нуба "а как мне отрубить ногу, а то болит очень" начинают давать советы как это лучше сделать вместо того чтобы рассказать как вытащить занозу.
Приходит такой "сеньор-помидор", и начинает разговаривать сам с собой. Выдумывает себе селективность, статистику, накладные расходы, и для решения примитивной задачи предлагает делать каких-то ненужных монстров.
Любые разговоры про временные таблицы, триггеры и денормализацию, которыми тут любят козырять в ответах, должны быть обоснованы. Данными, приведёнными в вопросе. А не нелепыми страхами автора вопроса и фантазиями доброхотов-отвечателей.
Ок, действительно, не придется.
Но это не делает предложение с временной таблицей менее дурацким.
Джойн по определению не составит никакой проблемы. Рекомендую почитать про индексы, и то как они помогают избежать поиска по большим таблицам.
Ваш ответ - типичная чушь с форума, когда на дурацкий вопрос дают еще более дурацкий ответ.
Пройти по массиву, составить список всех свойств.
Потом снова перебирать массив и для каждой строки добавлять свойства из списка, если есть то его, если нет - то пустоту
Лентюй, в целом согласен, пример хороший. Но опять же, человек, который знает такое слово, не будет спрашивать, как перебрать значения. Куда чаще встречается случай, когда бд используют как набор бумажных карточек, не зная никакой другой модели данных
А по поводу того, что написал тов. Лентюй, надо понимать, что дядя шутит. Он развлекается для собственного удовольствия, а не пытается помочь с проблемой. Которая, чтобы было понятно, не является какой-то дискуссионной.
Как раз наоборот, вопрос как хранить данные в бд этот вопрос примерно уровня "как надевать штаны". И вопрос у вас сейчас, "как мне ловчее надеть штаны через голову". Для вас, в силу неопытности, оба варианта равнозначны, и вы мучаетесь выбором, через голову надевать, или через ноги.
Но за исключением каких-то экстремальных случаев штаны надевают через ноги. А данные в бд хранят не через запятую, а в отдельной таблице в отдельных ячейках
правильнее заранее заносить строчки в эту табл циклом, каждую отдельной строкой
И работа с этими данными будет в сотни раз быстрее. Потому что правильно.
Только без всяких временных таблиц. Заносить только в постоянные
Ну так я же ровно об этом и говорю :)
Сначала надо освоить базовый синтаксис, а потом уже воспарить к абстракциям :)