[php] PDO는 마지막으로 삽입 된 ID를 얻습니다
검색어가 있는데 마지막 ID를 삽입하고 싶습니다. 필드 ID는 기본 키 및 자동 증분입니다.
나는이 진술을 사용해야한다는 것을 안다 :
LAST_INSERT_ID()
이 문장은 다음과 같은 쿼리에서 작동합니다.
$query = "INSERT INTO `cell-place` (ID) VALUES (LAST_INSERT_ID())";
그러나이 진술을 사용하여 ID를 얻으려면 :
$ID = LAST_INSERT_ID();
이 오류가 발생합니다.
Fatal error: Call to undefined function LAST_INSERT_ID()
내가 뭘 잘못하고 있죠?
답변
PHP가 아닌 SQL 함수이기 때문입니다. 사용할 수 있습니다 PDO::lastInsertId()
.
처럼:
$stmt = $db->prepare("...");
$stmt->execute();
$id = $db->lastInsertId();
PDO API 대신 SQL로 수행하려면 일반 선택 쿼리처럼 수행하십시오.
$stmt = $db->query("SELECT LAST_INSERT_ID()");
$lastId = $stmt->fetchColumn();
답변
lastInsertId ()는 INSERT 쿼리 이후에만 작동합니다.
옳은:
$stmt = $this->conn->prepare("INSERT INTO users(userName,userEmail,userPass)
VALUES(?,?,?);");
$sonuc = $stmt->execute([$username,$email,$pass]);
$LAST_ID = $this->conn->lastInsertId();
잘못됨 :
$stmt = $this->conn->prepare("SELECT * FROM users");
$sonuc = $stmt->execute();
$LAST_ID = $this->conn->lastInsertId(); //always return string(1)=0
답변
연결 개체 ($ conn)에서 lastInsertId () 메서드를 실행하여 마지막 트랜잭션의 ID를 얻을 수 있습니다.
이처럼 $ lid = $ conn-> lastInsertId ();
문서를 확인하십시오 https://www.php.net/manual/en/language.oop5.basic.php