복붙노트

PHP에서 MySQL 테이블의 마지막 삽입 ID를 얻는 방법은 무엇입니까?

PHP

PHP에서 MySQL 테이블의 마지막 삽입 ID를 얻는 방법은 무엇입니까?

새로운 데이터가 자주 삽입되는 표가 있습니다. 나는 테이블의 마지막 ID를 얻어야합니다. 어떻게해야합니까?

SELECT MAX (id) FROM 테이블과 비슷합니까?

해결법

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

    1.

    PDO를 사용하는 경우 PDO :: lastInsertId를 사용하십시오.

    Mysqli를 사용한다면, mysqli :: $ insert_id를 사용하십시오.

    아직도 MySQL을 사용하고 있다면 :

    그러나해야한다면 mysql_insert_id를 사용하십시오.

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

    2.

    현재 연결에 마지막으로 삽입 된 ID가 무엇인지 알 수있는 기능이 있습니다.

    mysql_query('INSERT INTO FOO(a) VALUES(\'b\')');
    $id = mysql_insert_id();
    

    코드를 두 개의 다른 세션에서 동시에 사용하면 문제가 발생할 수 있으므로 max를 사용하는 것은 좋지 않습니다.

    이 함수는 mysql_insert_id라고 불린다.

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

    3.

    괜찮아. 또한 LAST_INSERT_ID ()를 사용할 수 있습니다.

  4. ==============================

    4.

    PDO의 경우 :

    $pdo->lastInsertId();
    

    Mysqli :

    $mysqli->insert_id;
    

    새 코드에서 mysql_ * 함수를 사용하지 마십시오. 더 이상 유지 관리되지 않으며 공식적으로 사용되지 않습니다. 빨간 상자 보이니? 대신 준비된 문에 대해 배우고 PDO 또는 MySQLi를 사용하십시오.이 기사는 어떤 결정을 내리는 데 도움이됩니다. PDO를 선택한 경우 다음은 좋은 자습서입니다.

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

    5.

    mysql_insert_id () 함수를 사용하십시오.

    비슷한 질문보기

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

    6.

    당신이 쓴 것은 동시성 문제를 초청하는 것이 괜찮다는 가정하에 자동으로 증가하고 고유 한 것으로 가정하면 가장 큰 ID를 얻을 수 있습니다. MySQL을 데이터베이스로 사용하기 때문에 삽입을 수행 한 현재 연결에서만 작동하는 특정 함수 LAST_INSERT_ID ()가 있습니다. PHP는 mysql_insert_id라는 특정 기능을 제공합니다.

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

    7.

    빌드 된 PHP 함수 mysql_insert_id ();에 의해 가장 최근에 삽입 된 id를 얻을 수있다.

    $id = mysql_insert_id();
    

    너는 또한에 의해 최신 ID를 얻는다.

    $id = last_insert_id();
    
  8. ==============================

    8.

    codeigniter에서 마지막으로 삽입 된 id를 얻으려면 삽입 쿼리를 실행 한 후 데이터베이스에서 insert_id ()라는 함수 하나만 사용하면 마지막 삽입 된 ID가 반환됩니다.

    전의:

    $this->db->insert('mytable',$data);
    echo $this->db->insert_id(); //returns last inserted id
    

    한 줄에

    echo $this->db->insert('mytable',$data)->insert_id();
    
  9. ==============================

    9.

    mysql_insert_id ()를 사용하는 것이 좋습니다. 하지만 거기에 하나의 특정 참고 사항을 사용하여, 당신은 INSERT 쿼리를 실행 한 후에 그것을 호출해야합니다, 같은 스크립트 세션에서 의미합니다. 그렇지 않으면 제대로 작동하지 않을 것입니다.

  10. ==============================

    10.

    시도하십시오 잘 작동합니다.

    $link = mysqli_connect("localhost", "my_user", "my_password", "world");
    
    $query = "INSERT blah blah blah...";
    $result = mysqli_query($link, $query);
    
    echo mysqli_insert_id($link);
    
  11. ==============================

    11.

    참고 : 한 문장으로 여러 삽입을 수행하면 mysqli :: insert_id가 올바르지 않습니다.

    탁자:

    테이블 xyz (ID int (11) auto_increment, name varchar (255), primary key (id))를 작성하십시오.

    지금 할 일 :

    xyz (이름) 값 ( 'one'), ( 'two'), ( 'three');

    mysqli :: insert_id는 1이 아닌 3이 될 것이다.

    올바른 값을 얻으려면 :

    mysqli :: insert_id + mysqli :: affected_rows) - 1

    이것은 문서 였지만 다소 모호합니다.

  12. ==============================

    12.

    필자는 원하는 테이블의 마지막 auto_increment ID를 얻기 위해 순수한 MySQL 구문을 사용하는 것을 선호합니다.

    php mysql_insert_id ()와 mysql last_insert_id ()는 마지막 트랜잭션 ID만을 제공한다.

    마지막 트랜잭션 1뿐 아니라 스키마의 모든 테이블의 마지막 auto_incremented ID를 원할 경우이 쿼리를 사용할 수 있습니다

    SELECT AUTO_INCREMENT FROM information_schema.TABLES
        WHERE TABLE_SCHEMA = 'my_database' 
        AND TABLE_NAME = 'my_table_name';
    

    그게 전부 야.

  13. ==============================

    13.

    예를 들어 답을 보지 않는 것이 슬프다.

    Mysqli :: $ insert_id 사용 :

    $sql="INSERT INTO table (col1, col2, col3) VALUES (val1, val2, val3)";
    $mysqli->query($sql);
    $last_inserted_id=$mysqli->insert_id; // returns last ID
    

    PDO :: lastInsertId 사용 :

    $sql="INSERT INTO table (col1, col2, col3) VALUES (val1, val2, val3)";
    $database->query($sql);
    $last_inserted_id=$database->lastInsertId(); // returns last ID
    
  14. ==============================

    14.

    깨끗하고 단순한 -

    $selectquery="SELECT id FROM tableName ORDER BY id DESC LIMIT 1";
    $result = $mysqli->query($selectquery);
    $row = $result->fetch_assoc();
    echo $row['id'];
    
  15. ==============================

    15.

    MySQLi 트랜잭션을 사용할 때 때때로 mysqli :: $ insert_id를 얻을 수 없었다. 왜냐하면 0을 리턴했기 때문이다. 특히 INSERT를 실행하는 저장 프로 시저를 사용했다면. 따라서 거래 내 다른 방법이 있습니다.

    <?php
    
    function getInsertId(mysqli &$instance, $enforceQuery = false){
        if(!$enforceQuery)return $instance->insert_id;
    
        $result = $instance->query('SELECT LAST_INSERT_ID();');
    
        if($instance->errno)return false;
    
        list($buffer) = $result->fetch_row();
    
        $result->free();
    
        unset($result);
    
        return $buffer;
    }
    
    ?>
    
  16. ==============================

    16.

    mysqli는 depricating이므로 mysqli를 사용하십시오.

    <?php
    $mysqli = new mysqli("localhost", "yourUsername", "yourPassword", "yourDB");
    
    /* check connection */
    if (mysqli_connect_errno()) {
        printf("Connect failed: %s\n", mysqli_connect_error());
        exit();
    }
    // Conside employee table with id,name,designation
    $query = "INSERT INTO myCity VALUES (NULL, 'Ram', 'Developer')";
    $mysqli->query($query);
    
    printf ("New Record has id %d.\n", $mysqli->insert_id);
    
    /* close connection */
    $mysqli->close();
    ?>
    
  17. ==============================

    17.

    나는 노력했다.

    mysqli_insert_id ($ dbConnectionObj)

    이것은 현재 연결의 마지막으로 삽입 된 ID를 반환하므로 제대로 연결을 관리하고 있다면이 작업이 제대로 작동합니다. 최소한 나를 위해 일했습니다.

  18. ==============================

    18.

    PDP를 사용하고 다음을 시도하십시오.

    $stmt = $db->prepare("...");
    $stmt->execute();
    $id = $db->lastInsertId();
    
  19. ==============================

    19.

    $ lastid = mysql_insert_id ();

  20. ==============================

    20.

    이 모든 논의에서 최대 ID를 확인하는 이유는 다음 ID가 무엇인지 알아야한다는 것입니다. (내 최대 ID가 5이면 5 + 1 = 6이됩니다).

    >> 이것이 이유가 아니라면, 최선의 사과

    다른 사람이 당신의 CHECK와 INSERT 사이의 정보를 INSERT하면 잘못된 ID를 줄 수 있습니다.

    따라서 타임 스탬프 또는 다른 고유 값을 포함 할 수있는 해시를 만드는 경우 해결할 수 있습니다.

    그런 다음 동일한 함수에서 빈 값과 해시 값을 사용하여 정보를 삽입 할 수 있습니다. AUTO_INCRECEMENT가 선택되면 ID를 생성합니다.

    그런 다음 동일한 함수에서 여전히 해시를 가질 수 있으며 동일한 해시로 ID를 찾을 수 있습니다. 그리고 나서 당신은 mysql UPDATE로 빈 값을 채울 수 있습니다.

    이것은 조금 더 많은 연결을 포함하지만, 여전히 그것을 할 수있는 방법입니다 ...

    행운을 빕니다.

  21. ==============================

    21.

    테이블에 UserID, Emp_ID와 같은 AUTO INCREMENT 열이 있으면이 쿼리를 사용하여 마지막으로 삽입 된 레코드를 가져올 수 있습니다 SELECT * FROM table_name 여기서 UserID = (table_name에서 MAX (UserID) 선택) PHP 코드에서 :

    $con = mysqli_connect('localhost', 'userid', 'password', 'database_name');
                                    if (!$con) {
                                        die('Could not connect: ' . mysqli_error($con));
                                    }
                                    $sql = "SELECT * FROM table_name where UserID=(select MAX(UserID)from table_name)";
                                    $result = mysqli_query($con, $sql);
    

    그런 다음 가져온 데이터를 요구 사항으로 사용할 수 있습니다.

  22. ==============================

    22.

    mysql_query("INSERT INTO mytable (product) values ('kossu')");
    
    printf("Last inserted record has id %d\n", ***mysql_insert_id()***);
    
  23. from https://stackoverflow.com/questions/1685860/how-do-i-get-the-last-inserted-id-of-a-mysql-table-in-php by cc-by-sa and MIT lisence