Crud PHP y MySQL

En esta ocasión les traigo un crud con las operaciones básicas crear, listar, modificar y eliminar, en el lenguaje de programación php y como gestor de base de datos MySQl o pueden usar MariaDB, ya que utilizamos el driver MySQLi y es soportado por ambos gestores de base de datos.

Realizaremos un crud de personal, nuestro ejemplo quedara así:

crudphpmysqli

Utilizamos:

  • Lenguaje de programación PHP
  • Gestor de base de datos MYSQL
  • Driver MYSQLi
  • Bootstrap para el diseño
  • DataTables | Table plug-in for jQuery para mostrar la información pagina y poder ordenarla

Primero creamos la base de datos con las siguientes tablas:

POR ERROR EN LA TABLA PERSONAL SU ID ES AUTOINCREMENTAL PARA QUE FUNCIONE CORRECTAMENTE AL INSERTAR UN NUEVO REGISTRO (AUTO_INCREMENT) COMO SE MUESTRA EN EL SIGUIENTE SCRIPT

CREATE TABLE `personal` (
 `id` int(5) NOT NULL AUTO_INCREMENT,
 `nombre` varchar(200) NOT NULL,
 `sexo` varchar(20) NOT NULL,
 `telefono` varchar(25) NOT NULL,
 `direccion` text NOT NULL,
 `correo` varchar(200) NOT NULL,
 `idpais` int(11) NOT NULL,
 `idcargo` int(11) NOT NULL
) ENGINE=InnoDB;

CREATE TABLE `pais` (
 `id` int(5) NOT NULL,
 `pais` varchar(250) NOT NULL
) ENGINE=InnoDB;

CREATE TABLE `cargos` (
 `id` int(11) NOT NULL,
 `cargo` varchar(250) NOT NULL
) ENGINE=InnoDB;

Luegro creamos los siguientes archivos y carpetas:

index.php que muestra la información contenida en la tabla personal.


<?php
require("class/personal.php");
include "header.php";
?>
<p>
<a href="create.php" class="btn btn-primary btn-md"><span class="glyphicon glyphicon-plus" aria-hidden="true"></span> Agregar Personal</a><br/>
</p>
<table id="ghatable" class="display table table-bordered table-stripe" cellspacing="0" width="100%">
<thead>
<tr>
<th>ID</th>
<th>NOMBRE</th>
<th>SEXO</th>
<th>TELEFONO</th>
<th>DIRECCION</th>
<th>CORREO</th>
<th>PAIS</th>
<th>CARGO</th>
<th>MODIFICAR</th>
<th>ELIMINAR</th>
</tr>
</thead>
<tbody>
<?php
$objpersonal = new Personal();
$personal = $objpersonal->personal();
if(sizeof($personal) > 0){
foreach ($personal as $row){
?>
<tr>
<td><?php echo $row['id'] ?></td>
<td><?php echo $row['nombre'] ?></td>
<td><?php echo $row['sexo'] ?></td>
<td><?php echo $row['telefono'] ?></td>
<td><?php echo $row['direccion'] ?></td>
<td><?php echo $row['correo'] ?></td>
<td><?php echo $row['pais'] ?></td>
<td><?php echo $row['cargo'] ?></td>
<td>
<a href="update.php?u=<?php echo $row['id'] ?>"><span class="glyphicon glyphicon-pencil" aria-hidden="true"></span> Editar</a>
</td>
<td>
<a onclick="return confirm('Desea eliminar el registro')" href="delete.php?d=<?php echo $row['id'] ?>"><span class="glyphicon glyphicon-trash" aria-hidden="true"></span> Eliminar</a>
</td>
</tr>
<?php
}
}
?>
</tbody>
</table>
<?php
include "footer.php";
?>

create.php crea los registros del personal.

<?php
require("class/personal.php");
require("class/paises.php");
require("class/cargos.php");
include "header.php";
?>
<a href="index.php" class="btn btn-success btn-md"><span class="glyphicon glyphicon-arrow-left" aria-hidden="true"></span> Regresar</a>
<?php
if(isset($_POST['bts'])){
 if($_POST['nm']!=null && $_POST['gd']!=null && $_POST['tl']!=null && $_POST['ar']!=null){
 $paginas = new Personal();
 $paginas->add();
 ?>
 <p></p>
 <div class="alert alert-success alert-dismissible" role="alert">
 <button type="button" class="close" data-dismiss="alert"><span aria-hidden="true">&times;</span><span class="sr-only">Close</span></button>
 <strong>Listo!</strong> Registro guardado con exito... <a href="index.php">Home</a>.
 </div>
 <?php

 } else{
 ?>
 <p></p>
 <div class="alert alert-warning alert-dismissible" role="alert">
 <button type="button" class="close" data-dismiss="alert"><span aria-hidden="true">&times;</span><span class="sr-only">Close</span></button>
 <strong>Error!</strong> Formulario vacio.
 </div>
 <?php
 }
}
?>

<p><br/></p>
<div class="panel panel-default">
 <div class="panel-body">

 <form role="form" method="post">
 <div class="form-group">
 <label for="nm">Nombre</label>
 <input type="text" class="form-control" name="nm" id="nm" placeholder="Nombre completo">
 </div>
 <div class="form-group">
 <label for="gd">Sexo</label>
 <select class="form-control" id="gd" name="gd">
 <option value="0">-- seleccionar sexo --</option>
 <option value="Hombre">Hombre</option>
 <option value="Mujer">Mujer</option>
 </select>
 </div>
 <div class="form-group">
 <label for="tl">Telefono</label>
 <input type="text" class="form-control" name="tl" id="tl" placeholder="Telefono">
 </div>
 <div class="form-group">
 <label for="ar">Dirección</label>
 <textarea class="form-control" name="ar" id="ar" rows="3"></textarea>
 </div>
 <div class="form-group">
 <label for="email">Correo</label>
 <input type="email" class="form-control" name="email" id="email" placeholder="Correo electronico">
 </div>
 <div class="form-group">
 <label for="pais">Pais</label>
 <select class="form-control" name="pais">
 <option value="0">-- seleccionar pais --</option>
 <?php
 $objPaises = new Paises();
 $paises = $objPaises->paises();
 foreach ($paises as $pais) {
 ?>
 <option value="<?php echo $pais["id"]; ?>"><?php echo $pais["pais"]; ?></option>
 <?php
 }
 ?>
 </select>
 </div>

 <div class="form-group">
 <label for="cargo">Cargo</label>
 <select class="form-control" name="cargo">
 <option value="0">-- seleccionar cargo --</option>
 <?php
 $objC = new Cargos();
 $cargos = $objC->cargos();
 foreach ($cargos as $cargo) {
 ?>
 <option value="<?php echo $cargo["id"]; ?>"><?php echo $cargo["cargo"]; ?></option>
 <?php
 }
 ?>
 </select>
 </div>
 <button type="submit" name="bts" class="btn btn-default">Guardar</button>
 </form>
 <?php
 include "footer.php";
 ?>

update.php actualiza la información del personal.

<?php
require("class/personal.php");
require("class/paises.php");
require("class/cargos.php");
include "header.php";
if(isset($_GET['u'])){
 if(isset($_POST['bts'])){
 $per = new Personal();
 $per->update();
 }


 $obj = new Personal();
 $persona = $obj->personalPorId($_GET["u"]);
 ?>
 <a href="index.php" class="btn btn-success btn-md"><span class="glyphicon glyphicon-arrow-left" aria-hidden="true"></span> Regresar</a>
 <p><br/></p>
 <div class="panel panel-default">
 <div class="panel-body">

 <form role="form" method="post">
 <input type="hidden" value="<?php echo $persona[0]['id']; ?>" name="id"/>
 <div class="form-group">
 <label for="nm">Nombre</label>
 <input type="text" class="form-control" name="nm" id="nm" value="<?php echo $persona[0]['nombre']; ?>">
 </div>
 <div class="form-group">
 <label for="gd">Sexo</label>
 <select class="form-control" id="gd" name="gd">
 <?php
 if($persona[0]['sexo'] == "Hombre"){
 ?>
 <option value="Hombre" selected="selected">Hombre</option>
 <?php
 }else{
 ?>
 <option value="Hombre">Hombre</option>
 <?php
 }

 if($persona[0]['sexo'] == "Mujer"){
 ?>
 <option value="Mujer" selected="selected">Mujer</option>
 <?php
 }else{
 ?>
 <option value="Mujer">Mujer</option>
 <?php
 }
 ?>

 </select>
 </div>
 <div class="form-group">
 <label for="tl">Telefono</label>
 <input type="text" class="form-control" name="tl" id="tl" value="<?php echo $persona[0]['telefono']; ?>">
 </div>
 <div class="form-group">
 <label for="ar">Direccion</label>
 <textarea class="form-control" name="ar" id="ar" rows="3"><?php echo $persona[0]['direccion']; ?></textarea>
 </div>
 <div class="form-group">
 <label for="email">Correo</label>
 <input type="email" class="form-control" name="email" id="email" value="<?php echo $persona[0]['correo']; ?>">
 </div>

 <div class="form-group">
 <label for="pais">Pais</label>
 <select class="form-control" name="pais">
 <?php
 $objPaises = new Paises();
 $paises = $objPaises->paises();
 foreach ($paises as $pais) {
 if($persona[0]["idpais"] == $pais["id"]){
 ?>
 <option value="<?php echo $pais["id"]; ?>" selected="selected"><?php echo $pais["pais"]; ?></option>
 <?php
 }else{
 ?>
 <option value="<?php echo $pais["id"]; ?>"><?php echo $pais["pais"]; ?></option>
 <?php
 }
 
 }
 ?>
 </select>
 </div>

 <div class="form-group">
 <label for="cargo">Cargo</label>
 <select class="form-control" name="cargo">
 <option value="0">-- seleccionar cargo --</option>
 <?php
 $objC = new Cargos();
 $cargos = $objC->cargos();
 foreach ($cargos as $cargo) {
 if($persona[0]["idcargo"] == $cargo["id"]){
 ?>
 <option value="<?php echo $cargo["id"]; ?>" selected="selected"><?php echo $cargo["cargo"]; ?></option>
 <?php
 }else{
 ?>
 <option value="<?php echo $cargo["id"]; ?>"><?php echo $cargo["cargo"]; ?></option>
 <?php
 }

 
 }
 ?>
 </select>
 </div>
 <button type="submit" name="bts" class="btn btn-default">Actualizar</button>
 </form>
 <?php
 }
 include "footer.php";
 ?>

delete.php elimina los registros.

<?php
require("class/personal.php");
if(isset($_GET['d'])){
 $persona = new Personal();
 $persona->delete($_GET["d"]);
}
?>

despues creamos la carpeta class que contiene las siguientes clases.

conexion.php conecta con la base de datos.

<?php
Class Conexion {

 public function conectar(){
 $mysqli = new mysqli('localhost','root','','datos',3306);

 if ($mysqli->connect_errno)
 header('Location: offline.html');

 $mysqli->set_charset('utf8');

 return $mysqli;
 }

 public function comillas_inteligentes($valor) {
 // Retirar las barras
 if (get_magic_quotes_gpc()) {
 $valor = stripslashes($valor);
 }
 // Colocar comillas si no es entero
 if (!is_numeric($valor)) {
 $valor = "'" . $this->mysqli->real_escape_string($valor) . "'";
 }
 return $valor;
 }

}

personal.php realiza las operaciones basicas del crud en especifico del personal.

<?php
require_once 'conexion.php';
class Personal extends Conexion {

 public $mysqli;
 public $data;

 public function __construct() {
 $this->mysqli = parent::conectar();
 $this->data = array();
 }

 //*****************************************************************
 // LISTAMOS TODO EL PERSONAL
 //*****************************************************************
 public function personal(){
 $resultado = $this->mysqli->query("SELECT
 personal.id,
 personal.nombre,
 personal.sexo,
 personal.telefono,
 personal.direccion,
 personal.correo,
 pais.pais,
 cargos.cargo
 FROM
 personal
 INNER JOIN pais ON personal.idpais = pais.id
 INNER JOIN cargos ON personal.idcargo = cargos.id
 ");

 while( $fila = $resultado->fetch_assoc() ){
 $data[] = $fila;
 }

 if (isset($data)) {
 return $data; 
 } 
 
 }
 //*****************************************************************
 // AGREGAR PERSONAL
 //*****************************************************************
 public function add() {

 $consulta = sprintf(
 "INSERT INTO personal values(null, %s, %s, %s, %s, %s, %s, %s);", 
 parent::comillas_inteligentes($_POST['nm']), 
 parent::comillas_inteligentes($_POST['gd']), 
 parent::comillas_inteligentes($_POST['tl']),
 parent::comillas_inteligentes($_POST['ar']),
 parent::comillas_inteligentes($_POST['email']),
 parent::comillas_inteligentes($_POST['pais']),
 parent::comillas_inteligentes($_POST['cargo'])
 );
 $this->mysqli->query($consulta);

 }
 //*****************************************************************
 // MODIFICAR PERSONAL
 //*****************************************************************
 public function update() {

 $consulta = sprintf(
 "UPDATE personal SET
 nombre = %s,
 sexo = %s,
 telefono = %s,
 direccion = %s,
 correo = %s,
 idpais = %s,
 idcargo = %s
 WHERE
 id = %s;", 
 parent::comillas_inteligentes($_POST['nm']), 
 parent::comillas_inteligentes($_POST['gd']),
 parent::comillas_inteligentes($_POST['tl']),
 parent::comillas_inteligentes($_POST['ar']),
 parent::comillas_inteligentes($_POST['email']),
 parent::comillas_inteligentes($_POST['pais']),
 parent::comillas_inteligentes($_POST['cargo']),
 parent::comillas_inteligentes($_POST['id'])
 );

 $this->mysqli->query($consulta);

 echo "<script type='text/javascript'>window.location='index.php';</script>";
 }
 //*****************************************************************
 // ELIMINAR PRODUCTO
 //*****************************************************************
 public function delete($id) {
 $query = sprintf(
 "DELETE FROM personal WHERE id = %s;", 
 parent::comillas_inteligentes($id)
 );
 $this->mysqli->query($query);
 header("Location: index.php");
 }
 //*****************************************************************
 // PERSONAL POR ID
 //*****************************************************************
 public function personalPorId($id){
 $consulta = sprintf("SELECT
 personal.id,
 personal.nombre,
 personal.sexo,
 personal.telefono,
 personal.direccion,
 personal.correo,
 personal.idpais,
 personal.idcargo,
 pais.pais
 FROM
 personal
 INNER JOIN pais ON personal.idpais = pais.id
 INNER JOIN cargos ON personal.idcargo = cargos.id
 WHERE
 personal.id = %s", 
 parent::comillas_inteligentes($id)
 );

 $resultado = $this->mysqli->query($consulta);

 while( $fila = $resultado->fetch_assoc() ){
 $data[] = $fila;
 }

 if (isset($data)) {
 return $data; 
 }
 }

}
?>

paises.php lista los paises del personal.

<?php
require_once 'conexion.php';
class Paises extends Conexion {

 public $mysqli;
 public $data;

 public function __construct() {
 $this->mysqli = parent::conectar();
 $this->data = array();
 }

 //*****************************************************************
 // LISTAMOS DE PAISES
 //*****************************************************************
 public function paises(){
 $resultado = $this->mysqli->query("SELECT * FROM pais");

 while( $fila = $resultado->fetch_assoc() ){
 $data[] = $fila;
 }

 if (isset($data)) {
 return $data; 
 } 
 
 }

}

?>

cargos.php lista los cargos o puestos que hay en la empresa que simulamos.

<?php
require_once 'conexion.php';
class Cargos extends Conexion {

 public $mysqli;
 public $data;

 public function __construct() {
 $this->mysqli = parent::conectar();
 $this->data = array();
 }

 //*****************************************************************
 // LISTADO DE CARGOS
 //*****************************************************************
 public function cargos(){
 $resultado = $this->mysqli->query("SELECT * FROM cargos");

 while( $fila = $resultado->fetch_assoc() ){
 $data[] = $fila;
 }

 if (isset($data)) {
 return $data; 
 } 
 
 }

}

?>

32 comentarios en “Crud PHP y MySQL”

  1. Juan dice:

    Hola, me parece muy ordenado el código, sin embargo no logro conectar la bd mysql a mi phpmyadmin en mi hosting de ipage.com: Nombre de bd cambió y usuario, pero no lo logro, las rutas están bien, alguna sugerencia?

    1. sun2012 dice:

      hola, puede ser que no soporte la extensión mysqli tu server, saludos.

  2. Juan dice:

    Gracias. Pero luego mysql no es lo que trabaja el phpmyadmin? Es decir, la bd la importé sin problemas, php5.4

    1. sun2012 dice:

      prueba creando un phpinfo(), pues si el phpmyadmin puede que este trabajando con la antigua versión del driver de mysql. Es que a mysql se puede conectar por mysql, mysqli y pdo que son sus tres drivers. saludos.

      1. Juan dice:

        Hmm, voy a revisarlo. Gracias.

  3. Juan dice:

    Dice estar activo.

    Client API library version 5.5.41
    Active Persistent Links 0
    Inactive Persistent Links 0
    Active Links 0
    Client API header version 5.5.34
    MYSQLI_SOCKET /var/run/mysqld/mysqld.sock

    1. sun2012 dice:

      hola, pues revisa si están escritos bien los datos, si las tablas están bien. En los servidores se crea un archivo llamado error_log y lo abres con el editor de código del hosting y revisas que error manda y ya sabras por que nos e conecta. saludos.

      1. Juan dice:

        Pues mi servicio de hosting si tiene algo raro o dehabilitado porque en local si me funciona. Gracias por el aporte.

  4. Angel Reina dice:

    hola, esta bueno el aporte, sin embargo no me funciona, lo descargue cambie los parametros de conexion a una base de datos, pero al probarlo me funciona todo menos el ingresar personal, si me funciona actualizar y eliminar y el listar, pero si tengo informacion en la base, me toco insertarlas directamente en mysql.

    me interesa el aporte, me ayudas..

    gracias.

    1. sun2012 dice:

      hola, pues checa que estes poniendo los datos corectamente en el formulario y si no utiliza la función print_r y exit en las consultas para ver que estas recibiendo y por que no guarda, saludos

  5. juan ochoa dice:

    hola estoy utilizando este crud me parece fantástico. realice algunas modificaciones y no me quiere hacer update todo funciona bien menos esto alguien me puede colaborar quite algunos datos. creo que el error esta en el archivo personal.php en personal por id o modificar personal espero su colavoracion ya e intentado muchas cosas y no he podido

    mysqli = parent::conectar();
    $this->data = array();
    }

    //*****************************************************************
    // LISTAMOS TODO EL PERSONAL
    //*****************************************************************
    public function empresa_co(){
    $resultado = $this->mysqli->query(“SELECT * FROM empresa_co”);

    while( $fila = $resultado->fetch_assoc() ){
    $data[] = $fila;
    }

    if (isset($data)) {
    return $data;
    }

    }
    //*****************************************************************
    // AGREGAR PERSONAL
    //*****************************************************************
    public function add() {

    $consulta = sprintf(
    “INSERT INTO empresa_co values(null, %s, %s, %s, %s, %s, %s);”,
    parent::comillas_inteligentes($_POST[‘nit’]),
    parent::comillas_inteligentes($_POST[‘rs’]),
    parent::comillas_inteligentes($_POST[‘nc’]),
    parent::comillas_inteligentes($_POST[‘dir’]),
    parent::comillas_inteligentes($_POST[‘tl’]),
    parent::comillas_inteligentes($_POST[‘email’])
    );
    $this->mysqli->query($consulta);

    }
    //*****************************************************************
    // MODIFICAR PERSONAL
    //*****************************************************************
    public function update() {

    $consulta = sprintf(
    “UPDATE empresa_co SET
    nit = %s,
    razon_social = %s,
    nom_cont = %s,
    dir = %s,
    tel = %s,
    email = %s
    WHERE
    id_emp = %s;”,
    parent::comillas_inteligentes($_POST[‘nit’]),
    parent::comillas_inteligentes($_POST[‘rs’]),
    parent::comillas_inteligentes($_POST[‘nc’]),
    parent::comillas_inteligentes($_POST[‘dir’]),
    parent::comillas_inteligentes($_POST[‘tl’]),
    parent::comillas_inteligentes($_POST[‘email’]),
    parent::comillas_inteligentes($_POST[‘id’])
    );

    $this->mysqli->query($consulta);

    echo “window.location=’index.php’;”;
    }
    //*****************************************************************
    // ELIMINAR PRODUCTO
    //*****************************************************************
    public function delete($id_emp) {
    $query = sprintf(
    “DELETE FROM empresa_co WHERE id_emp = %s;”,
    parent::comillas_inteligentes($id_emp)
    );
    $this->mysqli->query($query);
    header(“Location: index.php”);
    }
    //*****************************************************************
    // PERSONAL POR ID
    //*****************************************************************
    public function empresa_coPorId(){
    $resultado = $this->mysqli->query(“SELECT * FROM empresa_co”);

    while( $fila = $resultado->fetch_assoc() ){
    $data[] = $fila;
    }

    if (isset($data)) {
    return $data;
    }

    }

    }
    ?>

    1. sun2012 dice:

      puedes usar echo $consulta; exit; antes del query y ver si esta bien tu consulta, saludos.

  6. lm dice:

    una consulta. he estado utilizando el crud, he modidficado algunos detalles pero no logro dar con las dimensiones del area del search y las entradas que se muestran debajo. previous/next, ambas se salen de la tabla o cuadro que contiene todo. help :/

    1. sun2012 dice:

      hola, pues puedes checar el plugin en su pagina oficial https://datatables.net/ y sobre todo tener cuidado con las etiquetas de la tabla por que están basadas en una estructura y si combinas o no cierras bien pues marca errores.

      1. lm dice:

        ok listo,solucionado.
        ahora me gustaría agregar algo más, quizá puedas guiarme un poco.
        quisiera agregar botones de exportación. como acá https://datatables.net/extensions/buttons/examples/html5/simple.html
        no he conseguido lograrlo…le he dado mil vueltas y nada.

        1. sun2012 dice:

          Pues checa la documentacion y pon los scripts corespondientea.

  7. sasuke2275 dice:

    Hola no entiendo bien como hacer este paso con mi proyecto no se que variables o funcioes tienen que ir ahí, ya nada mas me falta que se vea la tabla cambie la clase por responsables.php espero puedas ayudarme

    $objresponsables = new Responsables();
    $responsables = $objresponsables->responsables();
    if(sizeof($responsables) > 0){
    foreach ($responsables as $row){

    1. sun2012 dice:

      es programación orientada a objetos primero crea un objeto responsables luego se crea la variable responsables que trae de la funcion responsables todo el listado y luego si responsables tiene registros pues lo lista. checa la class responsable que este cambiado los datos y creado. saludos.

      1. sasuke2275 dice:

        Muchas gracias por contestar voy a checar eso :), pero creo que si tengo cambiado todo, la clase se llama Responsables y la funcion responsables. Saludos.

        No me habia fijado pero tambien en la clase responsables en la funcion responsables me dice que hay un error en:

        while( $fila = $resultado-> fetch_assoc() ){
        $data[] = $fila;

        Este es el error que me sale:
        Fatal error: Uncaught Error: Call to a member function fetch_assoc() on boolean in C:\xampp\htdocs\sistema_ci\class\responsables.php:32 Stack trace: #0 C:\xampp\htdocs\sistema_ci\index.php(26): Responsables->responsables() #1 {main} thrown in C:\xampp\htdocs\sistema_ci\class\responsables.php on line 32

        1. sun2012 dice:

          Hola. Pues por que no regresa nada puede ser por qur tu consulta esta mal, un campo esta mal escrito, no existe la tabla, no recuerdo si valido cuando esta vacia la tabla. Puede ser cualquiera de esos casos.

          1. sasuke2275 dice:

            Muy bien muchas gracias voy a checar mi base de datos y las tablas y los campos haber si tengo algun error en eso muchas gracias

          2. Sasuke2275 dice:

            Ya se salio el CRUD lo que pasaba era que tenia un campo que no tenia en la base de datos, pero ya funcion es muy bueno, pero tengo otra pregunta, como puedo hacer respnsive la tabla que muestra los registros de la BD?

  8. javier dice:

    Muy bueno el crud , mi consulta es si hay algún vídeo tutorial que explique como lo fueron haciendo? saludos

    1. sun2012 dice:

      hola, no hay ninguno. saludos

  9. juan dice:

    Hola,

    A mi tampoco se me guardan los registros a través de Agregar Personal. He de meterlo a mano a través de SQL en la BBDD. Con la funcion print_r me sale esto y ccreo que es relacionado con el campo id.

    Personal Object ( [mysqli] => mysqli Object ( [affected_rows] => -1 [client_info] => mysqlnd 5.0.11-dev – 20120503 – $Id: 76b08b24596e12d4553bd41fc93cccd5bac2fe7a $ [client_version] => 50011 [connect_errno] => 0 [connect_error] => [errno] => 1048 [error] => Column ‘id’ cannot be null [error_list] => Array ( [0] => Array ( [errno] => 1048 [sqlstate] => 23000 [error] => Column ‘id’ cannot be null ) ) [field_count] => 0 [host_info] => localhost via TCP/IP [info] => [insert_id] => 0 [server_info] => 5.7.14 [server_version] => 50714 [stat] => Uptime: 31545 Threads: 3 Questions: 1361 Slow queries: 0 Opens: 190 Flush tables: 1 Open tables: 156 Queries per second avg: 0.043 [sqlstate] => 00000 [protocol_version] => 10 [thread_id] => 216 [warning_count] => 0 ) [data] => Array ( ) )

    Alguna sugerencia?

    1. sun2012 dice:

      Hola. Checa que el id sea auto incremental para soportar el null.

      1. juan dice:

        Funcionó! muchas gracias.

  10. es exactamente lo que buscaba, tan solo me falta que uno de los campos fuese una imagen
    gracias

    1. sun2012 dice:

      pues solo les pongo imagen varchar(200) y solo guardo el nombre de la imagen en el campo y la imagen en una carpeta.

  11. Gustavo Verdu dice:

    mismo problema, no guardaba las altas de personal, y era que le faltaba autoincremental al ID de la tabla. Saludos y gracias por el aporte, muuuy bueno!!

  12. Jesus miguel dice:

    mi estimado me parece interesante tu proyecto, soy nuevo en programación quisiera que no me permita registrar correo duplicados que tendria que hacer. gracias de atepano por el apoyo.

    1. sun2012 dice:

      pues antes de insertar realiza una búsqueda si existe ese correo.

Deja un comentario