복붙노트

PHP / MySQL은 행을 삽입 한 다음 'id'를 얻습니다.

PHP

PHP / MySQL은 행을 삽입 한 다음 'id'를 얻습니다.

행을 삽입하면 표의 'id'필드가 자동으로 증가합니다. 난 행을 삽입하고 그 ID를 얻고 싶습니다.

내가 말했듯이 그것을 할 것이지만 행을 삽입하고 ID를 얻는 사이에 걱정하지 않고 할 수있는 방법이 있습니까?

내가 입력 한 정보와 일치하는 행에 대해 데이터베이스를 쿼리 할 수 ​​있다는 것을 알고 있지만, ID가 유일한 차이점과 함께 중복 될 높은 변경 사항이 있습니다.

해결법

  1. ==============================

    1.

    $link = mysqli_connect('127.0.0.1', 'my_user', 'my_pass', 'my_db');
    mysqli_query($link, "INSERT INTO mytable (1, 2, 3, 'blah')");
    $id = mysqli_insert_id($link);
    

    mysqli_insert_id ()를 참조하십시오.

    무슨 일을 하든지 "SELECT MAX (ID) FROM mytable"을 삽입하고 실행하지 마십시오. 당신이 말했듯이, 그것은 경쟁 조건이며 아무 필요도 없습니다. mysqli_insert_id ()는 이미이 기능을 가지고있다.

  2. ==============================

    2.MySQL 함수 LAST_INSERT_ID ()는 필요한 것을 수행한다. 이것은이 세션 동안 삽입 된 ID를 가져온다. 따라서 같은 테이블에 값을 삽입하는 다른 프로세스 (다른 사람이 똑같은 스크립트를 호출하는 경우 등)가 있더라도 사용하는 것이 안전합니다.

    MySQL 함수 LAST_INSERT_ID ()는 필요한 것을 수행한다. 이것은이 세션 동안 삽입 된 ID를 가져온다. 따라서 같은 테이블에 값을 삽입하는 다른 프로세스 (다른 사람이 똑같은 스크립트를 호출하는 경우 등)가 있더라도 사용하는 것이 안전합니다.

    PHP 함수 mysql_insert_id ()는 mysql_query ()로 SELECT LAST_INSERT_ID ()를 호출하는 것과 같습니다.

  3. ==============================

    3.PHP 웹 사이트에서 mysql_insert_id는 더 이상 사용되지 않으며 PDO를 사용해야합니다. PDO로이를 수행하려면 다음을 수행하십시오.

    PHP 웹 사이트에서 mysql_insert_id는 더 이상 사용되지 않으며 PDO를 사용해야합니다. PDO로이를 수행하려면 다음을 수행하십시오.

    $db = new PDO('mysql:dbname=database;host=localhost', 'user', 'pass');
    $statement = $db->prepare('INSERT INTO people(name, city) VALUES(:name, :city)');
    $statement->execute( array(':name' => 'Bob', ':city' => 'Montreal') );
    
    echo $db->lastInsertId();
    
  4. ==============================

    4.@NaturalBornCamper가 말했듯이, mysql_insert_id는 현재 사용되지 않으며 사용되어서는 안됩니다. 옵션은 이제 PDO 또는 mysqli를 사용합니다. NaturalBornCamper는 PDO에 대한 해답을 설명 했으므로 mysqli_insert_id를 사용하여 MySQLi (MySQL Improved)로 수행하는 방법을 보여 드리겠습니다.

    @NaturalBornCamper가 말했듯이, mysql_insert_id는 현재 사용되지 않으며 사용되어서는 안됩니다. 옵션은 이제 PDO 또는 mysqli를 사용합니다. NaturalBornCamper는 PDO에 대한 해답을 설명 했으므로 mysqli_insert_id를 사용하여 MySQLi (MySQL Improved)로 수행하는 방법을 보여 드리겠습니다.

    // First, connect to your database with the usual info...
    $db = new mysqli($hostname, $username, $password, $databaseName);
    // Let's assume we have a table called 'people' which has a column
    // called 'people_id' which is the PK and is auto-incremented...
    $db->query("INSERT INTO people (people_name) VALUES ('Mr. X')");
    // We've now entered in a new row, which has automatically been 
    // given a new people_id. We can get it simply with:
    $lastInsertedPeopleId = $db->insert_id;
    // OR
    $lastInsertedPeopleId = mysqli_insert_id($db);
    

    더 많은 예제는 PHP 문서를 확인하십시오 : http://php.net/manual/en/mysqli.insert-id.php

  5. ==============================

    5.난 그냥 lastInsertId ()에 관한 작은 세부 사항을 추가하고 싶다;

    난 그냥 lastInsertId ()에 관한 작은 세부 사항을 추가하고 싶다;

    한 번에 여러 행을 입력 할 때 마지막 ID를 반환하지는 않지만 마지막 삽입 컬렉션의 첫 번째 ID를 반환합니다.

    다음 예제를 고려해보십시오.

    $sql = 'INSERT INTO my_table (varNumb,userid) VALUES
         (1, :userid),
         (2, :userid)';
    $sql->addNewNames = $db->prepare($sql);
    addNewNames->execute(array(':userid' => $userid));
    
    echo $db->lastInsertId();
    

    여기서 일어나는 일은 my_table에 두 개의 새로운 행을 넣는 것입니다. 테이블의 ID는 자동 증가입니다. 동일한 사용자의 경우 varNumb이 다른 두 행을 추가합니다.

    마지막 에코 된 값은 varNumb = 1 인 행의 ID와 동일합니다. 이는 마지막 행의 ID가 아니라 마지막 요청에 추가 된 첫 번째 행의 ID입니다.

  6. ==============================

    6.예제.

    예제.

        $query_new = "INSERT INTO students(courseid, coursename) VALUES ('', ?)";
        $query_new = $databaseConnection->prepare($query_new);
        $query_new->bind_param('s', $_POST['coursename']);
        $query_new->execute();
        $course_id = $query_new->insert_id;
        $query_new->close();
    

    코드 줄 $ course_id = $ query_new-> insert_id; 마지막으로 삽입 된 행의 ID가 표시됩니다. 희망이 도움이됩니다.

  7. ==============================

    7.다음과 같이 해보십시오 :

    다음과 같이 해보십시오 :

    <?php
    $con=mysqli_connect("localhost","root","","new");
    // Check connection
    if (mysqli_connect_errno())
      {
      echo "Failed to connect to MySQL: " . mysqli_connect_error();
      }
    
    mysqli_query($con,"INSERT INTO new values('nameuser','2015-09-12')");
    
    // Print auto-generated id
    echo "New record has id: " . mysqli_insert_id($con);
    
    mysqli_close($con);
    ?>
    

    다음 링크를 살펴보십시오.

    http://www.w3schools.com/php/func_mysqli_insert_id.asp

    http://php.net/manual/en/function.mysql-insert-id.php

    이 확장 기능은 PHP 5.5에서는 더 이상 사용되지 않으며 PHP 7.0에서는 제거되었다는 점에 유의하십시오.

  8. ==============================

    8.위 링크 http://php.net/manual/en/function.mysql-insert-id.php에서 답변을 찾았습니다.

    위 링크 http://php.net/manual/en/function.mysql-insert-id.php에서 답변을 찾았습니다.

    정답은:

    mysql_query("INSERT INTO tablename (columnname) values ('$value')");        
    echo $Id=mysql_insert_id();
    
  9. ==============================

    9.이거 해봐 ... 날 위해 일 했어!

    이거 해봐 ... 날 위해 일 했어!

    $sql = "INSERT INTO tablename (row_name) VALUES('$row_value')";
        if (mysqli_query($conn, $sql)) {
        $last_id = mysqli_insert_id($conn);
        $msg1 = "New record created successfully. Last inserted ID is: " . $last_id;
    } else {
        $msg_error = "Error: " . $sql . "<br>" . mysqli_error($conn);
        }
    
  10. ==============================

    10.또 다른 가능한 대답은 다음과 같습니다.

    또 다른 가능한 대답은 다음과 같습니다.

    열과 데이터가있는 테이블을 정의하면 그 테이블이 갖게됩니다. 열 ID는 AUTO_INCREMENT 속성을 가질 수 있습니다.

    이 방법으로 ID에 대해 걱정할 필요가 없으며 자동으로 만들어집니다.

    예를 들어 (w3schools에서 가져옴)

    CREATE TABLE Persons
    (
    ID int NOT NULL AUTO_INCREMENT,
    LastName varchar(255) NOT NULL,
    FirstName varchar(255),
    Address varchar(255),
    City varchar(255),
    PRIMARY KEY (ID)
    )
    

    희망이 사람에게 도움이 될 것입니다.

    편집 : 이것은 자동 ID를 생성하는 방법을 정의한 부분이며, 생성 된 후에 얻으려면 이전의 대답이 맞습니다.

  11. from https://stackoverflow.com/questions/897356/php-mysql-insert-row-then-get-id by cc-by-sa and MIT license