Как после добавления строки выбрать её ID ?

Discussion in 'PHP' started by N2kroot, 29 Aug 2010.

  1. N2kroot

    N2kroot New Member

    Joined:
    25 Oct 2009
    Messages:
    75
    Likes Received:
    3
    Reputations:
    0
    Описание : после регистрации пользователя, если тот захотел добавить свой сервер, то добавляется строка в таблицу с серверами.


    Проблема : код неправильно сформирован, поскольку 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());
          }
     
  2. D1mOn

    D1mOn Elder - Старейшина

    Joined:
    2 Oct 2005
    Messages:
    380
    Likes Received:
    144
    Reputations:
    29
    mysql_insert_id() сразу после выполнения запроса.

    Тут с примером http://php.net/manual/en/function.mysql-insert-id.php
     
    #2 D1mOn, 29 Aug 2010
    Last edited: 29 Aug 2010
  3. N2kroot

    N2kroot New Member

    Joined:
    25 Oct 2009
    Messages:
    75
    Likes Received:
    3
    Reputations:
    0
    Спасибо, ID полую верный..

    Но у меня вопрос : вот создаст 100 человек в разные доли секунды запись - ID Вернётся мне мой ( если я с ними создавал ), или, например, я на строчке до получения ID, кто-то добавил запись, и потом я дошёл до этой строки - мне мой ID присвоится?
     
  4. D1mOn

    D1mOn Elder - Старейшина

    Joined:
    2 Oct 2005
    Messages:
    380
    Likes Received:
    144
    Reputations:
    29
    Не выдумывай, всё верно будет работать.
     
    1 person likes this.
  5. PaCo

    PaCo Elder - Старейшина

    Joined:
    6 Feb 2008
    Messages:
    436
    Likes Received:
    138
    Reputations:
    25
    Если не использовать mysql_insert_id() с persistent connections (mysql_pconnect) то никаких непредвиденных проблем с синхронизация быть не должно. Если же будет с persistent connections то привет блокировкам LOCK TABLE .... UNLOCK TABLES.
     
Loading...