복붙노트

[SQL] MySQL은 : LAST_INSERT_ID ()는 0을 반환

SQL

MySQL은 : LAST_INSERT_ID ()는 0을 반환

나는이 테스트 테이블을 가지고 :

CREATE TABLE IF NOT EXISTS `test` (
    `id` INT(10) AUTO_INCREMENT,
    PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=4;

삽입이 세 중 사용

INSERT INTO `test` (`id`) VALUES (NULL);
INSERT INTO `test` (`id`) VALUES (0);
INSERT INTO `test` () VALUES ();

및 발급

SELECT LAST_INSERT_ID();

그러나 쿼리는 항상 0 발생합니다.

PHP의에 mysql_insert_id 및 PDO :: lastInsertId () 중 어떤 결과를 얻을 수 없습니다.

나는이 모든 일에 놀겠다는 거 봤는데 작업에 얻을 수 없습니다. 아이디어?

해결법

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

    1.따라서 SELECT LAST_INSERT_ID ()는 효과 렌더링 - 문제는 새로운 CONNECTION_ID에 쿼리를 발행 할 때마다 결과 FALSE로 설정의 MySQL의 phpMyAdmin을 구성 파일의 PersistentConnections에있을 것 같았다.

    따라서 SELECT LAST_INSERT_ID ()는 효과 렌더링 - 문제는 새로운 CONNECTION_ID에 쿼리를 발행 할 때마다 결과 FALSE로 설정의 MySQL의 phpMyAdmin을 구성 파일의 PersistentConnections에있을 것 같았다.

    다음의 주제에 모든 쿼리에 대한 추가 정보는 () 새로운 CONNECTION_ID를 생성

    도움을 또한 감사 dnagirl

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

    2.이 문제에 대한 단지 내 50 센트, ​​나는 단순히 테이블 인덱스로 설정에는 AUTO_INCREMENT가없는 경우는 0보다 LAST_INSERT_ID 이상을받지 않습니다 것으로 나타났습니다.

    이 문제에 대한 단지 내 50 센트, ​​나는 단순히 테이블 인덱스로 설정에는 AUTO_INCREMENT가없는 경우는 0보다 LAST_INSERT_ID 이상을받지 않습니다 것으로 나타났습니다.

    나는이에 반 시간 정도 낭비. 턴 나는이 테이블에 대한 사실 확인 0의 LAST_INSERT_ID ()를가 계속 밖으로.

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

    3.당신이 결합해야

    당신이 결합해야

    INSERT INTO test (title) VALUES ('test');SELECT LAST_INSERT_ID();
    

    그런 다음 마지막으로 삽입 된 ID를 얻을 것이다

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

    4.저도 같은 문제를 가지고 있었다. 삽입 쿼리와 PHP 함수 내부 요청시에 mysql_insert_id () 또는 LAST_INSERT_ID ()는 0을 반환.

    저도 같은 문제를 가지고 있었다. 삽입 쿼리와 PHP 함수 내부 요청시에 mysql_insert_id () 또는 LAST_INSERT_ID ()는 0을 반환.

    나는 바로 INSERT 쿼리 그 기능 이후라는 별도의 PHP 함수에서 인 mysql_insert_id () 값을 요청하여 문제를 분류.

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

    5.저도 같은 문제를했다하지만 난 거래를 작성하여이를 해결했다.

    저도 같은 문제를했다하지만 난 거래를 작성하여이를 해결했다.

    $db->begin();
    $sql = "INSERT INTO 'test' VALUES('test')";
    
    if ($db->query($sql))
    {
        $id = $db->last_insert_id('test');
        $db->commit();
        return $id;
    }
    else{
        $db->rollback();
        return -1;
    }
    

    나는 시도했다

    return $db->last_insert_id('test');
    

    애프터 "커밋"그러나 그것은 항상 "0"을 반환

    그 당신을 도울 수 있기를 바랍니다

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

    6.그것은 완벽하게 작동 ... 그것을 시도 ...

    그것은 완벽하게 작동 ... 그것을 시도 ...

        $result = mysql_query("INSERT INTO `test` (`title`) VALUES ('test')");
        if ($result) {
            $id = mysql_insert_id(); // last inserted id
            $result = mysql_query("SELECT * FROM tablename WHERE id = $id") or die(mysql_error());
            // return user details
            if (mysql_num_rows($result) > 0) {
                return mysql_fetch_array($result);
            } else {
                return false;
            }
        } else {
            return false;
        }
    
  7. from https://stackoverflow.com/questions/13880267/mysql-last-insert-id-returns-0 by cc-by-sa and MIT license