Saltar al contenido

Insertar datos en mysql php

Insertar datos en mysql php

Cómo usar PHP para insertar datos en MySQL

Crear una tabla para Insertar datos en mysql php

En primer lugar, debes crear una tabla para tus datos. Si ya has creado una, desplázate hacia abajo hasta la siguiente sección. Crear una tabla es un proceso simple que puedes hacer con la opción phpMyAdmin, que encuentras en tu panel de control de hosting.

Después de ingresar a tu página de phpMyAdmin, deberías ver algo similar a esto:

Crearemos una tabla llamada Students para nuestra base de datos u264572517_name. Puedes crear una nueva tabla haciendo clic en el botón Create table. Después de eso, verás esta nueva página donde puedes ingresar toda la información necesaria para tu tabla:

Esta es la configuración más simple que puedes usar para una tabla, para obtener más información sobre la estructura de la tabla/base de datos y qué tipo de configuración puedes usar con esas columnas, consulta la documentación oficial de phpMyAdmin.

RebajasBestseller No. 1
Aprender PHP, MySQL y JavaScript
  • Aprender Php, Mysql Y Javascript
  • Tapa blanda
  • Español
  • Nixon, Robin (Author)
RebajasBestseller No. 2
Curso de PHP 8 y MySQL 8
  • Cabezas Granado, Luis Miguel (Author)
RebajasBestseller No. 3
RebajasBestseller No. 4
RebajasBestseller No. 1
Curso de PHP 8 y MySQL 8
  • Cabezas Granado, Luis Miguel (Author)
Bestseller No. 2
MySQL
55 Opiniones
MySQL
  • Gallardo, Juan Diego Gutiérrez (Author)
RebajasBestseller No. 3
Bestseller No. 4
MySQL - Manual de aprendizaje
  • Orpheus, Jim (Author)

Por ahora, aquí hay algunas explicaciones sencillas de las columnas que usamos:

  • Name: Este es el nombre de tu columna. Se mostrará en la parte superior de tu tabla.
  • Type: Puedes establecer un tipo de columna aquí. Por ejemplo, seleccionamos varchar porque necesitamos ingresar un tipo de cadena caracteres de nombre aquí (que tenga letras, no números).
  • Length/Values: Se usa para especificar la longitud máxima que tu entrada en esta columna puede tener.
  • Index: Usamos el índice «Principal» para nuestro campo «ID». Al crear una tabla, se recomienda tener una columna de ID. Se utiliza para enumerar las entradas de la tabla y se requiere para configurar las relaciones de la tabla. También marqué «A_I«, lo que significa Auto Incremento. Esto servirá para enumerar automáticamente las entradas (1,2,3,4 …).

Haz clic en Save para guardar y se creará tu tabla.

Código PHP para INSERTAR datos en una base de datos MySQL

Hay dos métodos que puedes usar para INSERTAR datos en tu base de datos MySQL. El método PHP MySQLi y el método PHP Data Object o PDO.

Método MySQLi

En primer lugar, debes establecer una conexión con una base de datos tomando como referencia nuestro tutorial anterior. Una vez hecho esto, podemos proceder con la consulta MySQL INSERT. Aquí hay un código de ejemplo completo con la conexión básica y los métodos de inserción:

  1. <?php
  2. $servername = «mysql.hostinger.co.uk»;
  3. $database = «u264572517_name»;
  4. $username = «u264572517_user»;
  5. $password = «buystuffpwd»;
  6. // Create connection
  7. $conn = mysqli_connect($servername, $username, $password, $database);
  8. // Check connection
  9. if (!$conn) {
  10. die(«Connection failed: » . mysqli_connect_error());
  11. }
  12. echo «Connected successfully»;
  13. $sql = «INSERT INTO Students (name, lastname, email) VALUES (‘Test’, ‘Testing’, ‘Testing@tesing.com’)»;
  14. if (mysqli_query($conn, $sql)) {
  15. echo «New record created successfully»;
  16. } else {
  17. echo «Error: » . $sql . «<br>» . mysqli_error($conn);
  18. }
  19. mysqli_close($conn);
  20. ?>

Entonces, la primera parte del código (líneas 3 a 18) tiene como objetivo la conexión a la base de datos. No vamos a analizar esta parte de nuevo, pero si quieres saber qué significa cada línea del código, mira nuestra guía anterior sobre cómo conectarte a una base de datos.

Comencemos con la línea número 19:

  1. $sql = «INSERT INTO Students (name, lastname, email) VALUES (‘Test’, ‘Testing’, ‘Testing@tesing.com’)»;

Esta es la línea más importante del código PHP, ya que es la que logra insertar datos en la base de datos MySQL. INSERT INTO es una declaración que agrega datos a la tabla de la base de datos especificada. En nuestro ejemplo, estamos agregando datos a la tabla Students.

Si continuamos, entre los corchetes, tenemos columnas de tabla específicas a las que queremos agregar los valores: (name, last name, email). Los datos se agregarán en el orden especificado. Si escribiéramos (email, last name, name), los valores serían agregados en un orden diferente.

La siguiente parte es la declaración de VALUES. Aquí especificamos nuestros valores para las columnas previamente especificadas. De esta forma, cada columna representa un valor específico. Por ejemplo, en nuestro caso sería así: name = Test, lastname = Testing, email = Testing@testing.com.

Algo más que vale la pena destacar es que acabamos de ejecutar una consulta SQL (SQL query, por su nombre en inglés) usando código PHP, las consultas SQL deben establecerse entre comillas. En nuestro ejemplo, todo lo que está entre comillas y después de $sql = es una consulta SQL.

La siguiente parte del código (líneas 20 a 22) verifica si nuestra consulta fue exitosa:

  1. if (mysqli_query($conn, $sql)) {
  2. echo «New record created successfully»;
  3. }

Simplemente muestra un mensaje de éxito si la consulta que ejecutamos fue exitosa.

Y la parte final (líneas 22 a 24) muestra un mensaje diferente en caso de que nuestra consulta no fuera exitosa:

  1. else {
  2. echo «Error: » . $sql . «<br>» . mysqli_error($conn);
  3. }

Esto nos mostrará un mensaje de error en caso de que algo esté mal.

Método PHP Data Object (PDO)

Al igual que en el ejemplo anterior, primero necesitamos una conexión a la base de datos lo cual se realiza creando un nuevo objeto PDO; este tutorial te mostrará cómo hacerlo. Como la conexión a la base de datos MySQL es un objeto PDO, debes usar varios métodos PDO (cualquier función que sea parte de cualquier objeto) para preparar y ejecutar consultas. Los métodos de los objetos se llaman así:

  1. $the_Object->the_Method();

PDO te permite preparar el código SQL antes de que se ejecute. La consulta SQL se evalúa y se corrige antes de ejecutarse. Un ataque de inyección SQL simplificado podría hacerse simplemente escribiendo código SQL en un campo de un formulario. Por ejemplo:

  1. // User writes this in the username field of a login form
  2. john»; DROP DATABASE user_table;
  3. // The final query becomes this
  4. «SELECT * FROM user_table WHERE username = john»; DROP DATABASE user_table;

Como hay un código SQL sintácticamente correcto, el punto y coma hace que DROP DATABASE user_table sea una nueva consulta SQL, y tu tabla de usuario se borra. Las declaraciones preparadas no permiten los caracteres « y ; para finalizar la consulta original y la instrucción maliciosa DROP DATABASE nunca se ejecutará.

Siempre deberías usar declaraciones preparadas al enviar o recibir datos de la base de datos con PDO.

RebajasBestseller No. 2
Código Limpio: Manual de estilo para el desarrollo ágil de software (Programación)
104 Opiniones
Bestseller No. 3
DREVO Tyrfing V2 Teclado Mecánico Gaming, 88 Key Distribución QWERTY Español, RGB retroiluminado Tenkeyless,con Programa Multimedia y Soporte de Software, Outemu táctil Interruptor marrón, Negro
  • Multifunción & soporte software: programable, 5 teclas programas macros que se puede funcionan en el mismo tiemp que provee sensibles de alta velocidad. Tambien soporta la cerradura de ventana, control de media y lleva el software.
  • RGB retroiluminacion personalizado: Con 9 preestablecidos colores y 14 modos distintos de luz, tiene alto desempeño de retroiluminaciones. Puede personalizar tu propio color cada tecla a traves de software.
  • Auténtica teclado mecánico: Anti-ghosting y N-key Rollover le permite a controlar cada tecla independiente, se puede transmitir las informaciónes exactas con tiempo increiblemente rápido, cuando jugar juegos, las teclas multimedias son muy interesantes.
  • Tecnología excelente: la placa es de aleación de aluminio, USB conectado dorado, el cable de USB es de nilón superior. dos soportes, y ABS laser-marked keycaps le ofrece perfecta sensación y mejor transparente por retroiluminación.
  • Diseño compacto 88 teclas: Diseño ergonómico de teclado 10 keyless ahorra más espacio y cuando escribe le ofrece la sensación perfecta de cómodo. El teclado perfecto para los jugadores y mercanógrafos.
Bestseller No. 4
Aig - Classicconta 6
12 Opiniones
Aig - Classicconta 6
  • Programa de contabilidad que vincula los datos proporcionando una singular agilidad a la hora de trabajar.
  • Edita asientos desde cualquier informe, navega por listados interactivos.
  • Robusto lector OCR permite contabilizar facturas escaneadas de forma automática.
  • Principales modelos de hacienda y formatos de conciliación bancaria.
  • El buscador global proporciona fluidez desde el primer momento. Busca facturas por texto o importe.

Para usar declaraciones preparadas, debes escribir una nueva variable que llame al método prepare() del objeto de la base de datos.

En el código correcto:

  1. <?php
  2. $servername = «mysql.hostinger.com»;
  3. $database = «u266072517_name»;
  4. $username = «u266072517_user»;
  5. $password = «buystuffpwd»;
  6. $sql = «mysql:host=$servername;dbname=$database;»;
  7. $dsn_Options = [PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION];
  8. // Create a new connection to the MySQL database using PDO, $my_Db_Connection is an object
  9. try {
  10. $my_Db_Connection = new PDO($sql, $username, $password, $dsn_Options);
  11. echo «Connected successfully»;
  12. } catch (PDOException $error) {
  13. echo ‘Connection error: ‘ . $error->getMessage();
  14. }
  15. // Set the variables for the person we want to add to the database
  16. $first_Name = «Test»;
  17. $last_Name = «Testing»;
  18. $email = «Testing@testing.com»;
  19. // Here we create a variable that calls the prepare() method of the database object
  20. // The SQL query you want to run is entered as the parameter, and placeholders are written like this :placeholder_name
  21. $my_Insert_Statement = $my_Db_Connection->prepare(«INSERT INTO Students (name, lastname, email) VALUES (:first_name, :last_name, :email)»);
  22. // Now we tell the script which variable each placeholder actually refers to using the bindParam() method
  23. // First parameter is the placeholder in the statement above – the second parameter is a variable that it should refer to
  24. $my_Insert_Statement->bindParam(:first_name, $first_Name);
  25. $my_Insert_Statement->bindParam(:last_name, $last_Name);
  26. $my_Insert_Statement->bindParam(:email, $email);
  27. // Execute the query using the data we just defined
  28. // The execute() method returns TRUE if it is successful and FALSE if it is not, allowing you to write your own messages here
  29. if ($my_Insert_Statement->execute()) {
  30. echo «New record created successfully»;
  31. } else {
  32. echo «Unable to create record»;
  33. }
  34. // At this point you can change the data of the variables and execute again to add more data to the database
  35. $first_Name = «John»;
  36. $last_Name = «Smith»;
  37. $email = «john.smith@email.com»;
  38. $my_Insert_Statement->execute();
  39. // Execute again now that the variables have changed
  40. if ($my_Insert_Statement->execute()) {
  41. echo «New record created successfully»;
  42. } else {
  43. echo «Unable to create record»;
  44. }

En las líneas 28, 29 y 30, usamos el método bindParam() del objeto de la base de datos. También está el método bindValue() que es muy diferente.

  • bindParam() – Este método evalúa los datos cuando se alcanza el método execute(). La primera vez que el script llega a un método execute(), ve que $first_Name corresponde a «Test», vincula ese valor y ejecuta la consulta. Cuando el script llega al segundo método execute(), ve que $first_Name ahora corresponde a «John», vincula ese valor y ejecuta nuevamente la consulta con los nuevos valores. Lo que es importante recordar es que definimos la consulta una vez y la reutilizamos con diferentes datos en diferentes puntos del script.
  • bindValue() – Este método evalúa los datos tan pronto como se llega a bindValue(). Como el valor de $first_Name se definió como «Test» cuando se llegó a bindValue(), este se usará cada vez que se llame a un método execute() para $my_Insert_Statement.

Observa que reutilizamos la variable $first_Name y le damos un nuevo valor la segunda vez. Si revisas tu base de datos después de ejecutar este script, tienes los dos nombres definidos, a pesar de que la variable $first_Name equivale a «John» al final del script. Recuerda que PHP evalúa un script completo antes de ejecutarlo.

Si actualizas el script para reemplazar bindParam con bindValue, insertarás en MySQL «Test Testing» dos veces en la base de datos y John Smith será ignorado.

Confirmar que todo funcione y resolver problemas comunes

Si la consulta que ejecutamos e insertamos en la base de datos MySQL fue exitosa, veremos el siguiente mensaje:

Connect Successfully

New record created successfully

Solución de errores comunes

Sin embargo, hay momentos en que el nuevo registro puede mostrar un error al insertar de SQL. Pero no te preocupes, hay algunas maneras en que puede solucionar estos errores de MySQL.

 

 

 

CÓMO ESCRIBIR DATOS EN UNA BASE DESDE PHP

Ya hemos llevado a cabo páginas que leen datos de nuestra banco de información pero, frecuentemente, requerimos transitar en sendero inverso, oséa, que nuestras páginas PHP añadan datos a una base.

Van a ser, fundamentalmente, dos los tipos de usuario que van a necesitar añadir registros a una tabla por medio de formularios HTML/PHP:

  1. Los gestores del contenido de un sitio Web, cuando ingresen a alguna página privada (protegida con usuario y clave, parte del panel de gestión o back-end del sitio), para –por ejemplo- añadir productos a un muestreo, novedades a un portal y tareas semejantes. El propósito de que los gestores añadan esa información, es que después sea visualizada por los visitantes que entren al sitio, oséa, que la naveguen usando páginas fluídas como las que aprendimos a hacer en el tema previo, cuyo contenido se encontraba almacenado en la banco de información.
  2. Los individuos de nuestro sitio además van a poder añadir en algunas situaciones datos a nuestra base, cuando manden un comentario de una novedad, un mensaje en un foro, completen sus datos en un formulario de registro, oséa, utilicen paginas HTML para escribir algo y enviarlo hacia el servidor desde el front-end (las paginas «publicas» de nuestro sitio).

Figura. El gestor interactúa con el black-end, y el usuario, con el front-end.

Sea quien fuere el tipo de usuario que agregara datos a nuestra base, lo va a hacer usando una misma técnica: un formulario HTML para escribir los datos del lado del cliente (navegador) y, la pagina del destino de ese formulario, un código PHP que, al estar situado del lado del servidor, va a poder insertar los datos en la base y después devolver algunas respuestas al navegador.

Entonces hablamos de un desarrollo que tiene dos etapas o «momentos»:

  • El instante inicial donde el usuario completa el formulario, del lado del cliente;
  • Y el segundo, cuando una página PHP recibe en el servidor las cambiantes que el usuario completó y las usa para realizar una consulta SQL que introduce los datos de la base.

Comunmente, este desarrollo se dividirá en dos páginas diferentes: un archivo HTML para los formularios y una página PHP para el código que se ejecutara en el servidor, insertará el apunte en la base y presentara un mensaje de triunfo o error.

Figura. Dos páginas: un formulario envía datos y, otra, los recibe y los introduce en la base.

En la segunda página (agregar.php), para insertar los registros en la base, los pasos necesarios serán:

  1. Que el software intérprete de PHP se identifique frente el software administrador de MySQL y seleccione una base (ya hemos desarrollado una utilidad que hacia esto en el tema previo, por eso tendremos la posibilidad de utilizarla).
  2. Preparemos una variable la orden del lenguaje SQL que se requiere para insertar datos en la base.
  3. Ejecutaremos esa orden SQL (no va a ser primordial hacer una utilidad detalla para insertar datos, debido a que esta consulta no trae datos, sino que la envía hacia la base, por lo cual no es requisito crear ni correr después ningún «pack de datos»). Ejecutaremos la orden con mysql_query de manera directa, va a ser primordial considerar si devolvió verdadero o no la ejecución de esa consulta y, en funcionalidad de esto, exponemos un mensaje de triunfo (si el apunte fue insertado) o de error.

Pasemos a la acción:

CREANDO EL FORMULARIO

Como primera medida, construiremos un formulario que nos va a dejar escribir los datos que deseamos añadir a la tabla de «mensajes».

Este formulario va a tener dos campos de texto, para el nombre y el dirección de correo electrónico, respectivamente, y un sector de texto para el mensaje (el id no lo insertará el usuario, debido a que es un campo auto-increment)

A este formulario lo vamos a llamar formulario.html, y su código tiene la posibilidad de ser algo así:

<form method=»post» action=»agregar.php»>
<fieldset>
<legend> Ingrese su consulta</legend>
<p>
<label> Escriba su nombre:
<input type=»text» name=»nombre» />
</label>
</p>
<p>
<label>Escriba su correo electrónico:
<input type=»text» name=»email» />
</label>
</p>
<p>
<label>Escriba su mensaje:
<textarea name=»mensaje» cols=»30″ rows=»5″></textarea>
</label>
</p>
<p>
<input type=»submit» value=»enviar»/>
</p>
</fieldset>
</form>

Además de enseñar atención a los name (ya que van a ser los nombres de las cambiantes que tendremos la posibilidad de leer en la siguiente página desde una celda de la matriz $_POST).

Lo más relevante aquí es que el atributo action del formulario está apuntando hacia una segunda pagina llamada agregar.php; que va a ser la que codificaremos ahora.

CONEXIÓN A MYSQL

En la segunda página (es decir, aquella página hacia la cual apuntaba al action del formulario previo y que decidimos denominar añadir.php), después de validar si se han recibido las cambiantes, el artista de PHP va a intentar conectarse al programa MySQL, y va a tratar de elegir una base.

Para estas tareas, ya habíamos desarrollado una utilidad en el artículo previo, asi que iremos a reutilizarlas:

<?php
// Incluimos los datos de conexión y las funciones:
include(«datos.php»);
include(«funciones.php»);
// Utilizamos esas variables:
if (conectarBase($host,$usuario,$clave,$base)) {
// Aquí irá el resto
} else {
echo»<p>Servicio interrumpido</p>»;
}
?>

Desde luego, debemos recordar ubicar los ficheros datos.php y funcionalidades.php en la misma carpeta donde nos encontramos haciendo un trabajo para que esto logre trabajar.

En este momento, pasemos al segundo paso.

LA ORDEN INSERT DEL LENGUAJE SQL

Una vez autenticados frente MySQL y elegida la base, prepararemos, dentro de una variable, la consulta del lenguaje SQL que se usa para insertar datos en una tabla de la base: la orden INSERT.

La sintaxis elemental de la orden INSERTes la siguiente:

INSERT INTO tabla (campo1, campo2, campo3) VALUES (‘valor1’, ‘valor2’, ‘valor3’);

Esto podría traducirse como «Insertar en una tabla indicada, en los campos enumerados,los valores siguientes».

Observemos un caso de muestra para entenderlo mejor:

INSERT INTO mensajes (id, nombre, dirección de correo electrónico, mensaje) VALUES (‘0’, ‘Delgado’, ‘adrian.delgado@cuc.udg.mx’, ‘Bla, Bla, bla’)

Observemos que los valores (enumerados entre paréntesis después de la palabra VALUES) siempre van envueltos entre comillas sencillos, y hay una rectificación de orden, debido a que se insertará, el primer campo de la lista (el campo id, en este caso), el primero de los value (el 0); en el segundo (nombre), el segundo value (Delgado), y de esta forma sucesivamente.

Notemos además que hemos entregado un cero como valor para el campo id, debido a que va a ser generado de forma automática (lo hemos definido como auto-increment).

Así nos despreocupamos y, para todos los registros que hayamos ido a insertar, siempre proporcionaremos un cero como valor del id, y va a ser MySQL quien se ocupe de asignarle el valor correspondiente (por supuesto, todo lo mencionado debido a que hemos definido al campo id como auto-increment).

Tengamos en cuenta que tenemos la posibilidad de realizar consultas SQL desde el phpMyAdmin, pulsando en la solapa SQL, escribiendo ordenes en lenguaje SQL dentro de la sector de texto, y después pulsaremos seguir para ver el resultado de la ejecución. Es aconsejable que probemos numerosas ocasiones esta orden INSERT para familiarizarnos con ella.

A esta orden INSERT del lenguaje SQL, la vamos a dejar redactada dentro de una variable, para que la tengamos la posibilidad pasar como parámetro a una utilidad que se encargue de ejecutarla.

Pero no vamos a escribir ahí los datos «a mano», como en el ejemplo previo, sino que deberemos cambiar esta orden para que verdaderamente reciba los datos enviados desde el formulario de la primera página, por lo cual va a quedar algo como lo que sigue:

<?php
//Validamos que hayan llegado estas cambiantes, y que no esten vacias:
if (isset($_POST[«nombre»], $_POST[«email»], $_POST[«mensaje»]) and $_POST[«nombre»] !=»» and $_POST[«email»]!=»» and $_POST[«mensaje»]!=»» ){
//traspasamos a cambiantes locales, para evadir adversidades con las comillas:
$nombre = $_POST[«nombre»];
$email = $_POST[«email»];
$mensaje = $_POST[«mensaje»];
//Preparamos la orden SQL
$consulta = «INSERT INTO mensajes
(id,nombre,email,mensaje) VALUES (‘0′,’$nombre’,’$email’,’$mensaje’)»;
//Aqui ejecutaremos esa orden
} else {
echo ‘<p>Por favor, complete el <a href=»formulario.html»>formulario</a></p>’;
}
?>

Lo más relevante aquí es que verifiquemos la existencia de las cambiantes, y las dejemos preparadas, listas para utilizar dentro de $consulta.

Última actualización el 2021-05-19 / Enlaces de afiliados / Imágenes de la API para Afiliados