Описание : после регистрации пользователя, если тот захотел добавить свой сервер, то добавляется строка в таблицу с серверами. Проблема : код неправильно сформирован, поскольку ID выбирается WHERE IP = '$ip', а в инете ой как много разных польозвателей под одним ip. Вопрос : как выбрать ID сразу после добавления? И именно тот, что был только что создан. Сорцы : PHP: $sql_in = "insert into user (U_email,U_password,U_ip,U_confirm_hash, U_is_confirmed, U_reg_date, U_server_added, U_access) values ('$email','$password','$ip','$confirm_hash', '$confirmed','".time()."', '1', '0')"; mysql_query($sql_in) or die(mysql_error()); if ($add_server == '1') { $sql=mysql_query("select U_id from user where U_ip='$ip'"); $ide=mysql_fetch_array($sql); $id=$ide['U_id']; $sql_in = "insert into server (S_uid,S_protect,S_name,S_about_short, S_type, S_mode, S_about,S_rating,S_perehodi, S_ip, S_port, S_is_confirmed, S_reg_date, S_icq, S_url) values ('$id','$protect','$title','$short','$TYPE','$MODE','$description', '0','0','$s_ip','$port','$confirmed','".time()."', '$icq', '$site')"; mysql_query($sql_in) or die(mysql_error()); }
mysql_insert_id() сразу после выполнения запроса. Тут с примером http://php.net/manual/en/function.mysql-insert-id.php
Спасибо, ID полую верный.. Но у меня вопрос : вот создаст 100 человек в разные доли секунды запись - ID Вернётся мне мой ( если я с ними создавал ), или, например, я на строчке до получения ID, кто-то добавил запись, и потом я дошёл до этой строки - мне мой ID присвоится?
Если не использовать mysql_insert_id() с persistent connections (mysql_pconnect) то никаких непредвиденных проблем с синхронизация быть не должно. Если же будет с persistent connections то привет блокировкам LOCK TABLE .... UNLOCK TABLES.