Pergunta sobre mysql, database, pdo, php – O PDO obtém o último ID inserido

131

Eu tenho uma consulta e quero inserir o último ID. O ID do campo é a chave primária e o incremento automático.

Eu sei que tenho que usar esta declaração:

LAST_INSERT_ID()

Essa declaração funciona com uma consulta como esta:

$query = "INSERT INTO `cell-place` (ID) VALUES (LAST_INSERT_ID())";

Mas se eu quiser obter o ID usando esta declaração:

$ID = LAST_INSERT_ID();

Eu recebo este erro:

Fatal error: Call to undefined function LAST_INSERT_ID()

O que estou fazendo de errado?

Sua resposta

2   a resposta
6

Corrigir:

$stmt = $this->conn->prepare("INSERT INTO users(userName,userEmail,userPass) 
                              VALUES($username,$email,$pass)");
$sonuc = $stmt->execute();
$LAST_ID = $this->conn->lastInsertId();

Incorreta:

$stmt = $this->conn->prepare("SELECT * FROM users");
$sonuc = $stmt->execute();
$LAST_ID = $this->conn->lastInsertId(); //always return string(1)=0
Exemplo ruim, as variáveis ​​não têm lugar nas consultas. Use instruções preparadas:php.net/manual/en/pdo.prepared-statements.php Wouter van Eekelen
286

PDO::lastInsertId().

Gostar:

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

Se você quiser fazer isso com SQL em vez da API do PDO, você faria como uma consulta de seleção normal:

$stmt = $db->query("SELECT LAST_INSERT_ID()");
$lastId = $stmt->fetchColumn();
@Bludream Sim,SCREAMING_SNAKE_CASE é mencionado no link do Wiki.lastInsertId é uma função PHP Data Object. PHP usa amboscamelCase (lastInsertId) esnake_case (str_replace). rybo111
@Corbin: eu apago a parte, você estava certo. Mimouni
@Bludream nunca disse que não era;) rybo111
Sua resposta funcionou para mim é bem simples Humphrey

Perguntas relacionadas