- 1
- 2
- 3
- 4
- 5
- 6
- 7
...
$query = "INSERT INTO `test`.`users` (`id` ,`email` ,`password` ,`nick` ,`sex` ,`date_birth` ,`about`) VALUES(NULL,'$email','$password','$nick','$sex','$dataBirth','$about')";
$db->query($query);
$query = "SELECT `id` FROM `users` WHERE `email` = '$email' AND `password` = '$password'";
$result = $db->select($query);
...
Dummy00001 03.11.2010 14:53 # 0
к слову. а как он правильно определяется? в те времена когда я активно БД мучал (~8-10 лет назад), по другому на чистом SQL было никак.
rtfm 03.11.2010 15:01 # +3
В данном же случае нужно воспользоваться методом mysql_insert_id интерфейса для взаимодействия с MySQL.
В PHP подобные методы есть во всех (или почти во всех) интерфейсах для взаимодействия с СУБД.
istem 03.11.2010 16:02 # 0
Лучше через мускул...
Dummy00001 03.11.2010 16:38 # 0
Анонимус 03.11.2010 15:55 # +3
bugmenot 03.11.2010 18:22 # +1
Анонимус 03.11.2010 18:26 # +3
fey 05.11.2010 07:50 # −1
rtfm 08.11.2010 10:49 # 0
в нагруженных системах, между этими двумя обращения sequence может измениться сотню раз.
fey 08.11.2010 11:53 # 0
к примеру для postgresql ,
Есть sequence table_id_seq пусть текущее значение в нем 5
идет запрос на вставку
Абстрактный код:
$id = select nextval('table_id_seq'); # id будет равен 6
insert into table(id,name) value($id,$value);
Если следом идет еще один запрос на вставку то он получит уже значение 7, но нам будет уже все равно
rtfm 08.11.2010 12:19 # −2
я забыл про возможность увеличения sequence при получения значения.
а что будет есть запрос на вставку не пройдет? например, из-за невалидности данных или синтаксической ошибке в запросе. sequence будет делать много "пропусков", что тоже не хорошо.
не лучше ли получать реальный номер ПК уже после вставки?
fey 08.11.2010 14:27 # +2
А то что в базе будет идти 1 а потом сразу 10 id , как мне кажется тоже не является проблемой.
Также по-идее невалидность данных должна быть проверена до вставки , не говоря уж о синтаксической ошибке в запросе, и то что запрос не пройдет является скорее исключением ,а не правилом, так что в общем случае столбец id будет идти у вас дружным слитным и радующим глаз рядом )
fey 08.11.2010 11:56 # 0