Ver índice
Añadir registros e índices (usando MySQLi)

        Ocultar índice  

   Índice de contenidos
   Instalación en Windows
   Instalación en Ubuntu
   Servidores seguros
   Páginas dinámicas
   Sintaxis básica
   Operaciones
   Arrays
   Formatos de presentación
   Operadores
   Bucles
   Extraer y ord. información
   Funciones
   Ficheros externos
   Imágenes dinámicas
   Gestión de directorios
   Cookies y sesiones
   Clases y objetos
   Ficheros en formato PDF
   Bases de datos MySQL
   PHP y XML
   PDO - Bases SQLite / MySQL
   MySQL a traves de misqli
   Algo de JavaScript y AJAX


Añadir registros a una tabla

La sentencia MySQL que permite añadir registros a una tabla es la siguiente:

INSERT tabla (campo1,campo2,..) VALUES (valor1,valor2,..)

Transcribimos el desarrollo un ejemplo anterior de creación de una tabla e inserción de registros utilizando diversos métodos. La única diferencia entre lo que tratemos aquí y lo que hemos visto aquí será la forma de comunicación entre PHP y MySQL. El proceso es el siguiente:

Creación de la tabla

Empezaremos creando una tabla a la que llamaremos demo4 y que contendrá los siguientes campos:

El código fuente del fichero que genera esta tabla puedes verlo aquí debajo

Ver código fuente

Añadir un registro

Cuando se añade un registro en una tabla los valores pueden añadirse en la propia sentencia MySQL o ser recogidos de los valores de variables PHP previamente definidas.

En este ejemplo tienes el código fuente del primero de los casos, en el que se añade a la tabla anterior un registro cuyos valores son:

DNI Nombre Apellido1 Apellido2 Nacimiento Sexo Hora Fumador Idiomas
1234 Lupicinio Servidor Servido 1954-11-23 M 16:24:52 NULL 3

Ver código fuente
mediante procesos
Ver código fuente
mediante objetos

Presta atención a los siguientes aspectos:

Añadir un registro a partir de datos contenidos en variables

También es posible añadir registros a partir de valores contenidos en variables PHP. Esta opción es, sin ninguna duda, la más utilizada, ya que lo habitual será escribir el contenido a añadir en un form y después -a través del method (POST o GET)- pasar al script de inserción esos valores como variables PHP.

Aquí tienes el código fuente de un ejemplo con la tabla anterior.

Ver código fuente
mediante procesos
Ver código fuente
mediante objetos

Quizá te resulten de alguna utilidad estos comentarios:

Variantes de la sentencia INSERT

La sentencia INSERT cuya sintaxis se indica más arriba como:

INSERT tabla (campo1,campo2,..) VALUES (valor1,valor2,..)

permite algunos modificadores opciones tales como:

INSERT [LOW_PRIORITY | DELAYED] [IGNORE] tabla (campo1,campo2,..) VALUES (valor1,valor2,..)

de ellos LOW_PRIORITY y DELAYED son incompatibles por lo que solo cabe uno u otro pero no ambos.

Veamos su utilidad. La inserción de registros y la lectura de una tabla son procesos incompatibles, pero cabe la posibilidad de que se intenten ejecutar simultáneamente. No olvides que estamos en Internet y es perfectamente posible que desde dos ordenadores distintos, dos personas distintas estén accediendo a la misma tabla simultáneamente y que uno de los accesos sea de escritura, es decir: añadir, modificar o borrar campos en la tabla.

¿Quién tiene preferencia de paso? ¿Quien tiene que esperar?. Si la opción LOW_PRIORITY está activada, el proceso de escritura esperará a que terminen los procesos de lectura activos, pero si está activa la opción DELAYED el proceso de lectura se interrumpirá automáticamente para ceder el paso al de escritura.

Respecto a la opción IGNORE tiene utilidad cuando se trata de realizar una secuencia de inserciones. Si no está activa en el momento en el que aparezca una clave duplicada se interrumpirá el proceso de inserción, por el contrario, si estuviera activa el proceso de inserción continuará con los siguientes registros de la secuencia, aunque -como es lógico- seguirán sin insertarse los registros con clave duplicada.

Número de resgistros afectados por una sentencia

Cuando se usa el interface de MySQLi es posible cuantificar el número de registros afectados por la ejecución de una sentencia. A tal fin y para el caso de programar mediante procesos disponemos de la función

mysqli_affected_rows($conexion)

que devuelve el número de registros afectados por la ejecución de la última instrucción mysqli_query que utilizó el identificador de conexión $conexion. En el caso de que la programación de nuestros scripts esté orientada a objetos disponemos de la propiedad:

$objeto->affected_rows

cuyo valor es número de registros afectados por la última ejecución del método $objeto->query(). En los ejemplos siguientes hay ejemplos de utilización de este cuantificador.

Tablas para pruebas

Aquí tienes comentado un script que permite agregar aleatoriamente y de forma automática registros a la tabla demo4. Dado que en las páginas siguientes trataremos de consultas, va a resultarnos muy cómodo poder rellenarlas de forma automática.

Ver código fuente
mediante procesos
Ver código fuente
mediante objetos