Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

235
Visualizações
¿Cómo obtener el valor de la expresión de LAST_INSERT_ID(`my_column`+1)?

Tipo de base de datos: MariaDB
Motor de tabla: InnoDB

Tengo una tabla donde dentro tiene una columna con un valor que se está incrementando (no automático, no se inserta en esta tabla)

Cuando ejecuto la siguiente consulta SQL en phpMyAdmin, funciona bien como debería:

 UPDATE `my_table` SET `my_column` = LAST_INSERT_ID(`my_column` + 1) WHERE `my_column2` = 'abc'; SELECT LAST_INSERT_ID();

Lo anterior me devuelve el último valor de la tabla my_column cuando ocurrió la consulta. Esta consulta se tomó directamente de los documentos de mysql sobre el bloqueo: https://dev.mysql.com/doc/refman/8.0/en/innodb-locking-reads.html (hacia abajo) y esta parece ser la forma recomendada de trabajar con contadores cuando no quieres que se vea afectado por otras conexiones.

Mi DOP:

 try { $conn = new PDO("mysql:host=$servername;dbname=$dbname", $username, $password); // set the PDO error mode to exception $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); $sql = "UPDATE `my_table` SET `my_column` = LAST_INSERT_ID(`my_column` + 1) WHERE `my_column2` = 'abc'; SELECT LAST_INSERT_ID();"; // Prepare statement $stmt = $conn->prepare($sql); // execute the query $stmt->execute(); $result = $stmt->fetchColumn(); // causes general error $result = $stmt->fetch(PDO::FETCH_ASSOC);// causes general error // echo a message to say the UPDATE succeeded echo $stmt->rowCount() . " records UPDATED successfully"; } catch(PDOException $e) { echo $sql . "<br>" . $e->getMessage(); } $conn = null;

Error exacto SQLSTATE[HY000]: General error , si elimino las líneas donde intento obtener el resultado, actualiza la columna, pero aún no tengo un resultado de retorno... ¿cómo realizo esa consulta de actualización y obtengo el seleccione el resultado todo de una vez como lo hago cuando lo ejecuto en phpMyAdmin? Todo esto debe suceder de una vez según lo especificado en los documentos de MySQL, por lo que no tengo problemas en los que dos conexiones puedan obtener el mismo contador.

over 4 years ago · Santiago Trujillo
1 Respostas
Responde à pergunta

0

No es necesario realizar SELECT LAST_INSERT_ID(); . PDO guardará ese valor automáticamente para usted y podrá sacarlo de PDO.

Simplemente haz esto:

 $conn = new PDO("mysql:host=$servername;dbname=$dbname;charset=utf8mb4", $username, $password, [ PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION ]); $sql = "UPDATE `my_table` SET `my_column` = LAST_INSERT_ID(`my_column` + 1) WHERE `my_column2` = 'abc'"; // Prepare statement $stmt = $conn->prepare($sql); // execute the query $stmt->execute(); $newID = $conn->lastInsertId();

lastInsertId() le dará el valor del argumento evaluado por LAST_INSERT_ID() .

over 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda