- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
$sql = "SELECT MAX(user_id) AS total
FROM " . USERS_TABLE;
if ( !($result = $db->sql_query($sql)) )
{
message_die(GENERAL_ERROR, 'Could not obtain next user_id information', '', __LINE__, __FILE__, $sql);
}
if ( !($row = $db->sql_fetchrow($result)) )
{
message_die(GENERAL_ERROR, 'Could not obtain next user_id information', '', __LINE__, __FILE__, $sql);
}
$user_id = $row['total'] + 1;
Найдено в phpBB-wap. Перед регистрацией пользователя. $user_id - id регистрирующегося юзера. Похоже, автор не знает про auto_increment
TWINc 27.08.2009 16:56 # −2
Q-Zma 27.08.2009 18:03 # −2
inkanus-gray 04.06.2016 20:06 # 0
interested 27.08.2009 18:45 # +2
СУБД такие вещи сама должна делать, для того поля auto_increment и существуют.
Кроме того в postgresql есть serial квалификатор similar to the AUTO_INCREMENT property supported by some other databases
Yozheg 28.08.2009 08:02 # +2
guest 28.08.2009 10:31 # +1
Речь об "универсальности" и разработке.
Даже предположив, что существует такая СУБД (а это вполне реально, просто я с ними не знаком), которая не умеет генерировать последовательности автоматически, возникает ужаснейшая ситуация.
Мало того, что мы "универсализируем" код для того, чтобы он работал с некоторой СУБД, которая просто неприменима в нашем проекте, кроме того этот код будет неэффективно работать с теми СУБД, что всё же имеют систему автоматических последовательностей.
Подобные вещи указывают на очень серьёзные просчёты на этапе разработки.
guest 28.08.2009 11:04 # −2
interested 28.08.2009 11:41 # −2
guest 31.08.2009 23:41 # 0
guest6 28.06.2024 23:05 # 0
guest6 29.06.2024 01:28 # 0
grimskin 28.08.2009 15:29 # −2
Bobby 28.08.2009 13:10 # 0
Говногость 31.08.2009 16:25 # −2
guest 31.08.2009 00:02 # −3
В пхпбб (частично исторически, частично из-за совместимости с другими БД, частично из-за совместимости с другими приложениями) могут быть юзеры с -1 идентификатором.
Как ведет себя в таком случае автоинкримент не знает только полный идиот.
Более того, в тех версиях пхпбб что я смотрел, обработчик ошибок дубля автоинкримента есть, просто постер кода сюда "забыл" "по какой-то причине" его сюда написать.
guest 31.08.2009 09:07 # +1
Если есть два пользователя с одним идентификатором, то зачем он нужен? Это всю идею и строгость базы нарушает. Это даже тогда даже не проблема плохого программирования, а проблема логики с неопределённостями. Без всякого контекста ясно, что это грубая ошибка этапа разработки, вызванная "потугами" универсальности. А дальше её было просто очень дорого исправить.
guest 02.10.2009 17:04 # 0
guest 12.04.2013 02:07 # 0
roman-kashitsyn 13.04.2013 08:21 # +3
"на вашем форуме появлялся автологин
вида http://ваш_форум/login.php?username=ваш_ник&password=ваш_ пароль"
Ну да, а чтобы "вспомнить" пароль, теперь достаточно посмотреть в access.log.
inkanus-gray 16.04.2013 00:31 # 0
P.S. Или не так:
«Вы принесли в базу новый реферер: http://ваш_форум/login.php?username=vasya15&password=1234 5»
anonimb84a2f6fd141 16.04.2013 01:10 # 0