Ver Mensaje Individual
  #4 (permalink)  
Antiguo 01/02/2022, 18:13
pilucho
 
Fecha de Ingreso: noviembre-2004
Ubicación: NULL
Mensajes: 655
Antigüedad: 20 años, 2 meses
Puntos: 6
Respuesta: lastInsertId con PDO

Cita:
Iniciado por bandolera Ver Mensaje
No me queda muy claro.
1) Los registros se ingresan de uno en uno o puede ser por lotes?
2) Tu campo CODIGO tiene al final un ID que quieres que se incremente. Pero el lastInsertId() es del anterior registro insertado, ese valor debe ser guardado en algún lugar, una tabla o en una variable de sesión.
Porque si inicias nuevamente y no has insertado nada, o el insert no tiene éxito el valor devuelto podría ser 0.
3) Cuál es la estructura de tu tabla.





1) Los registros se ingresan de uno en uno o puede ser por lotes?

R) Se ingresan uno en uno.

2) Tu campo CODIGO tiene al final un ID que quieres que se incremente. Pero el lastInsertId() es del anterior registro insertado, ese valor debe ser guardado en algún lugar, una tabla o en una variable de sesión.
Porque si inicias nuevamente y no has insertado nada, o el insert no tiene éxito el valor devuelto podría ser 0.

R) El "CODIGO" es un campo llamado "codigo", que debe guardar un nombre con el ultimo ID ej. "CASO-2022-51" ("51") viene hacer el ultimo ID, y si me guarda "0" usando el siguiente método.

Código PHP:
Ver original
  1. // Es una idea pero no me funciona.
  2.         $ultima = $conexion->lastInsertId();
  3.         $codigo = "CASO-".date("Y")."-".$ultima;        // CASO-2022-1,  CASO-2022-2, Etc..
  4.         $statement = $conexion->prepare("UPDATE paciente SET codigo = $codigo WHERE idpaciente = '$ultima'");
  5.         $statement->execute();
  6.         $result = $statement->execute(
  7.             array(
  8.                 ':codigo'    =>    $ultima
  9.             )
  10.         );


3) Cuál es la estructura de tu tabla.

R)

Código SQL:
Ver original
  1. CREATE TABLE IF NOT EXISTS `paciente` (
  2.   `idpaciente` INT(11) UNSIGNED NOT NULL AUTO_INCREMENT,
  3.   `codigo` VARCHAR(60) NOT NULL DEFAULT '',
  4.   `fecha` datetime DEFAULT NULL,
  5.   PRIMARY KEY (`idpaciente`)
  6. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;