Loading...
Лара (7 сен 2023, в 14:49)
Limit 20
Остальные 80, что?

Вообщем, вы меня не так поняли видимо
Если все 100 записей хранятся в базе данных, очевидно что после удаления 20 записей, остальные 80 записей останутся в базе данных. Нет?
________
посл. ред. 07.09.2023 в 14:56; всего 1 раз(а); by SayrusCraft
SayrusCraft , надёжнее использовать все-же диапазоны в условиях для удаления, но дело каждого
SayrusCraft (7 сен 2023, в 14:02)
SNEG , не пользуетесь num_rows? Это ваше дело. По сути вы можете вообще не пользоваться PHP и руками искать, и вносить изменения в базу данных, если вам так угодно.
Идентификатор должен быть уникальным, если у вас в базе данных более 1-го идентификатора, то вы плохо продумали логику сайта / приложения.
Как раз таки всё хорошо продумываю такой говнокодь избегаю
Теперь разберемся этот кусок кода что предложил ты , выберем всё (пошаримся по всех колонках, учитывая что нам одна нужна это id) в таблице users где совпали хэши и оборвем поиск при первом совпадении
php
$check_hash = $mysqli -> query("SELECT * FROM `users` WHERE `hash` = '".$hash."' LIMIT 1");

if($check_hash -> num_rows)


хэш это и есть id
________
посл. ред. 07.09.2023 в 17:03; всего 1 раз(а); by SNEG
SNEG (7 сен 2023, в 12:59)
num_rows - таки вообще не пользуюсь а тем более в связке с limit 1, это же надо такое изобретать, посчитать количество записей сколько их всего есть и на первом совпадение оборвать
Тут он верно сделал, зачем делать full scan таблицы Если цель найти хотя-бы одно совпадение?
На таблицах мелких не заметно, а при обьемных проблемно, а вообще если у тебя сессия короткая то ты можешь почистить таблицу сессий и тогда шанс повторного хеша будет мелким 👐
Scammer (7 сен 2023, в 17:03)
Тут он верно сделал, зачем делать full scan таблицы Если цель найти хотя-бы одно совпадение?
На таблицах мелких не заметно, а при обьемных проблемно, а вообще если у тебя сессия короткая то ты можешь почистить таблицу сессий и тогда шанс повторного хеша будет мелким 👐
Id это и есть $hash
Пропустим хэш выглядит числом 24 не будем писать на 32 символа
С его слов нужно посчитать select 24 from sessions where id =24 limit 1 ? Колонка primary key дабликата там быть не может цель сгенерировать без ошибок новый
________
посл. ред. 07.09.2023 в 17:09; всего 2 раз(а); by SNEG
SNEG (7 сен 2023, в 17:07)
Id это и есть $hash
Пропустим хэш выглядит числом 24 не будем писать на 32 символа
С его слов нужно посчитать select 24 from sessions where id =24 limit 1 ? Колонка primary key дабликата там быть не может цель сгенерировать без ошибок новый
Так он делает проверку перед insert Т.е. проверяет наличие хеша до инсерта.
Хотя вариант с try catch выглядит привлекательным всеравно))
Scammer (7 сен 2023, в 17:13)
Так он делает проверку перед insert Т.е. проверяет наличие хеша до инсерта.
Хотя вариант с try catch выглядит привлекательным всеравно))
Не сильно логичная проверка, у меня знаний не хватает пока что как сделать , но хватает чтобы сказать что это ставить нельзя, то что он предложил
________
посл. ред. 07.09.2023 в 17:38; всего 2 раз(а); by SNEG
SNEG (7 сен 2023, в 17:03)
Как раз таки всё хорошо продумываю такой говнокодь избегаю
Теперь разберемся этот кусок кода что предложил ты , выберем всё (пошаримся по всех колонках, учитывая что нам одна нужна это id) в таблице users где совпали хэши и оборвем поиск при первом совпадении
php
$check_hash = $mysqli -> query("SELECT * FROM `users` WHERE `hash` = '".$hash."' LIMIT 1");

if($check_hash -> num_rows)


хэш это и есть id
Честно говоря, я не совсем понял что вы пытаетесь изобрести.

Я привёл вам пример поиска хэша в базе данных, а не пытался написать код за вас.

При поиске нужна только одна колонка (id)? Нет проблем, после SELECT вместо * укажите только `id`.
Пример: (SELECT `id` FROM `users` ....).

Вам не нужен LIMIT 1 в запросе? Просто удалите или перепишите примерный код под свои нужды.

Хз, какой говнокод вы пытаетесь избежать, если у вас элементарно, идентификаторы имеют не уникальные значения.
SayrusCraft (7 сен 2023, в 18:36)
Честно говоря, я не совсем понял что вы пытаетесь изобрести.

Я привёл вам пример поиска хэша в базе данных, а не пытался написать код за вас.

При поиске нужна только одна колонка (id)? Нет проблем, после SELECT вместо * укажите только `id`.
Пример: (SELECT `id` FROM `users` ....).

Вам не нужен LIMIT 1 в запросе? Просто удалите или перепишите примерный код под свои нужды.

Хз, какой говнокод вы пытаетесь избежать, если у вас элементарно, идентификаторы имеют не уникальные значения.
Объясняю , хэш md5 выступает в виде id записи , так от select id from sessions where id = $hash limit 1 , я так и сам могу )))
Потом я походил подумал select id from sessions это всё в массив и уже по массиву искать, а вдруг сессий 20 миллионов, что-то говнецо выходит тоже, мне же нужно всего сравнить с текущей которая создаётся
А вот твои select * + ещё 10 пробежек по колонкам каждой записи которые не относятся никак к задумке
И num_rows проблемная хрень не помню как она работает но она хорошо лопатит каждую строку , лучше count(*)
________
посл. ред. 07.09.2023 в 19:05; всего 6 раз(а); by SNEG
SNEG (7 сен 2023, в 19:00)
Объясняю , хэш md5 выступает в виде id записи , так от select id from sessions where id = $hash limit 1 , я так и сам могу )))
Потом я походил подумал select id from sessions это всё в массив и уже по массиву искать, а вдруг сессий 20 миллионов, что-то говнецо выходит тоже, мне же нужно всего сравнить с текущей которая создаётся
А вот твои select * + ещё 10 пробежек по колонкам каждой записи которые не относятся никак к задумке
И num_rows проблемная хрень не помню как она работает но она хорошо лопатит каждую строку , лучше count(*)
Допустим вы с базы данных получили все идентификаторы и поместили в массив.
А что если в этот момент у другого пользователя сгенирировался одинаковый идентификатор, вы ведь это не узнаете, потому-что вы ведете поиск в массиве, а не напрямую с базы данных.
По итогу, есть вероятность что в базе данных будет два одинаковых идентификатора.
________
посл. ред. 07.09.2023 в 19:08; всего 1 раз(а); by SayrusCraft
Онлайн: 1
Время:
Gen. 0.1128
(c) Bym.Guru 2010-2025