Listado completo de tutoriales

Temario del Tutorial60 - mysqli (POO) - propiedad: insert_id


Otra propiedad de amplio uso es insert_id, la misma almacena el valor generado en un campo autonumérico cuando efectuamos un insert.

Muy útil para mostrar al usuario que codigo se generó cuando efectuamos un alta en una tabla.

Problema

Implementar el algoritmo para efectuar el alta de un artículo en la tabla "articulos", mostrar por pantalla el código que se generó en forma automática.

La primer página tiene por objetivo mostrar el formulario para que el usuario ingrese el nombre del artículo, su precio y seleccione el rubro al que pertenece (pagina1.php):

<!doctype html>
<html>

<head>
  <meta charset="utf-8">
  <meta name="viewport" content="width=device-width, initial-scale=1">
  <title>Alta de artículo</title>
</head>

<body>
  <form method="post" action="pagina2.php">
    Ingrese descripcion del artículo:
    <input type="text" name="descripcion" required>
    <br>
    Ingrese precio:
    <input type="text" name="precio" required>
    <br>
    Seleccione rubro:
    <select name="codigorubro">
      <?php
      $mysql = new mysqli("localhost", "root", "", "base1");
      if ($mysql->connect_error)
        die("Problemas con la conexión a la base de datos");

      $registros = $mysql->query("select codigo,descripcion from rubros") or
        die($mysql_error);
      while ($reg = $registros->fetch_array()) {
        echo "<option value=\"" . $reg['codigo'] . "\">" . $reg['descripcion'] . "</option>";
      }
      ?>
    </select>
    <br>
    <input type="submit" value="confirmar">
  </form>
</body>

</html>

La página siguiente (pagina2.php) es donde efectuamos el insert en la tabla articulos y seguidamente procedemos a acceder al atributo insert_id de la clase mysqli:

<!doctype html>
<html>

<head>
  <meta charset="utf-8">
  <meta name="viewport" content="width=device-width, initial-scale=1">
  <title>Alta de artículo</title>
</head>

<body>

  <?php
  $mysql = new mysqli("localhost", "root", "", "base1");
  if ($mysql->connect_error)
    die("Problemas con la conexión a la base de datos");

  $mysql->query("insert into articulos(descripcion,precio,codigorubro) 
        values ('$_REQUEST[descripcion]',$_REQUEST[precio],$_REQUEST[codigorubro])") or
    die($mysql_error);

  echo "Se cargó el artículo y se se generó el código de artículo:";
  echo $mysql->insert_id;

  $mysql->close();

  ?>

</body>

</html>

Como podemos observar que luego de llamar al método query del objeto $mysql procedemos a imprimir la propiedad insert_id que almacena en ese momento el código de artículo que acaba de generarse al ejecutar el comando SQL insert:

    echo $mysql->insert_id;


Problema resuelto.

Copiar el contenido de este cuadro de texto al VS Code y almacenarlo en la carpeta c:\xampp\htdocs con un nombre con extensión php.
luego abrir el navegador (Chrome, FireFox, IExplorer etc.) y en la barra de direcciones tipear:
http://localhost/pagina1.php (o el nombre del archivo que le dió)

pagina1.php

Ejecutar ejemplo

pagina2.php


Retornar