Antes de comenzar esta gu铆a de inserci贸n de MySQL a trav茅s de PHP, necesitar谩 acceder al panel de control de su alojamiento.

隆Obtenga un gran descuento en PHP Hosting hoy! 隆Hasta un 90% de descuento por tiempo limitado!

Empezar ahora

Si a煤n tiene preguntas sobre c贸mo configurar su conexi贸n MySQL, puede consultar este tutorial en PHPMySQL, que cubre los pasos m谩s importantes para trabajar con PHP y bases de datos.

C贸mo crear una tabla (opcional) C贸mo usar PHP para insertar datos en una base de datos MySQL

Primero, tenemos que crear una tabla para sus datos. Si ya ha creado uno, pase a la siguiente secci贸n.

Es un proceso muy simple que puede realizar con phpMyAdmin, que se encuentra en el panel de control de su alojamiento.

Despu茅s de iniciar sesi贸n en su p谩gina phpMyAdmin, deber铆a ver algo como la imagen a continuaci贸n:

Crearemos una tabla llamada Estudiantes a nuestra base de datos u266072517_name. Puede crear una nueva tabla haciendo clic en Crear mesa. Despu茅s de eso, ver谩 esta nueva p谩gina donde puede ingresar toda la informaci贸n necesaria para su tabla:

Esta es la configuraci贸n m谩s simple que puede usar para una tabla, para obtener m谩s informaci贸n sobre la estructura de la tabla / base de datos y qu茅 tipos de configuraciones puede usar con esta columna, consulte el documento oficial de la phpMyAdmin.

Por ahora, aqu铆 hay una breve explicaci贸n de las columnas que usamos:

  • Nombre – Este es el nombre de su columna. Se mostrar谩 en la parte superior de su mesa.
  • Tipo – Aqu铆 puede configurar el tipo de columna aqu铆. Por ejemplo, seleccionamos varchar porque necesitamos seleccionar un tipo de nombre aqu铆 (que tiene letras, no n煤meros).
  • Longitud / valores – Se utiliza para especificar la longitud m谩xima que puede tener su entrada en esta columna.
  • 脥ndice – Usamos el “Principal” para el 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 al configurar la tabla. Tambi茅n seleccionamos “AH脥”, que significa Autoincremento. Esto enumerar谩 autom谩ticamente las entradas (1, 2, 3, 4鈥).

clickea en Salvar (Guardar) y su mesa estar谩 lista.

C贸mo escribir c贸digo PHP para insertar datos en la base de datos MySQL聽

Hay dos m茅todos que puede utilizar para realizar la INSERTAR (Inserci贸n) de datos en su base de datos MySQL, son: m茅todo PHP MySQLi y PHP Data Object (o m茅todo PDO).

M茅todo MySQLi C贸mo usar PHP para insertar datos en una base de datos MySQL

En primer lugar, debe establecer una conexi贸n a la base de datos. Despu茅s de ese paso, podemos continuar con el INSERTAR del consulta de MySQL. Aqu铆 hay un ejemplo de c贸digo completo con los m茅todos b谩sicos de conexi贸n e inserci贸n:

La primera parte del c贸digo (l铆neas 3-18) se trata de la conexi贸n actual a la base de datos. No volveremos a pasar por todo el proceso. Sin embargo, si desea saber qu茅 significa cada l铆nea de c贸digo, consulte nuestro tutorial sobre c贸mo conectarse a una base de datos.

Comencemos con la linea 19:

$sql = "INSERT INTO Students (name, lastname, email) VALUES ('Test', 'Testing', 'Testing@tesing.com')";

Esta es la l铆nea m谩s importante de nuestro c贸digo y ejecuta todo lo que queremos aprender en este tutorial: insertar datos PHP de MySQL. EL INSERTAR EN es una declaraci贸n que agrega datos a una base de datos espec铆fica en la tabla. En este ejemplo, estamos agregando datos a la tabla. Estudiantes.

Avanzando, entre corchetes, tenemos las columnas de la tabla para las que queremos agregar valores (nombre, apellido, correo electr贸nico). Los datos se completar谩n en el orden especificado. Si escribimos (correo electr贸nico, apellido, nombre), los valores se agregar铆an en el orden incorrecto.

La siguiente parte es sobre la declaraci贸n. VALORES. Aqu铆 especificamos los valores para las columnas determinadas previamente. De esta forma, cada columna representa un valor espec铆fico. Por ejemplo, en nuestro caso ser铆a: nombre = Thom, apellido = Vial, correo electr贸nico = thom.v@some.com.

Otra cosa relevante es que acabamos de realizar la Consulta SQL usando c贸digo PHP. Recordando que las consultas SQL deben colocarse entre citas. En nuestro ejemplo, todo entre comillas y despu茅s de $ sql = es una consulta SQL.

La siguiente parte del c贸digo (l铆neas 20 – 22) muestra si nuestro pedido se realiz贸 correctamente.

if (mysqli_query($conn, $sql)) {
     echo "New record created successfully";
}

Simplemente muestra un mensaje de 茅xito si la orden que ejecutamos se ha cumplido.

Y la parte final (l铆neas 22-24) muestra un mensaje diferente si la solicitud no se ejecuta correctamente:

else {
     echo "Error: " . $sql . "
" . mysqli_error($conn);
}

Mostrar谩 un mensaje de error si algo sale mal.

M茅todo PHP Data Object (PDO)

Como en el ejemplo anterior, primero necesitamos una conexi贸n a la base de datos creando un nuevo objeto PDO. Para hacer esto, use este tutorial.

Dado que la conexi贸n a la base de datos MySQL es un objeto PDO, debe utilizar varios m茅todos DOP (cualquier funci贸n que forme parte de cualquier objeto) para preparar y realizar pedidos. Los m茅todos de objeto se llaman as铆:

$the_Object->the_Method();

La DOP te permite preparar el c贸digo SQL antes de su ejecuci贸n. La consulta SQL se eval煤a y corregido antes de ser ejecutado. Se puede realizar un ataque de inyecci贸n SQL simplificado simplemente escribiendo el c贸digo SQL en un campo de un formulario. Por ejemplo:

// User writes this in the username field of a login form
john"; DROP DATABASE user_table;

// The final query becomes this
"SELECT * FROM user_table WHERE username = john"; DROP DATABASE user_table;

Dado que existe un c贸digo SQL sint谩cticamente correcto, el punto y coma hace que DROP DATABASE user_table una nueva consulta SQL y su tabla se elimina. Las declaraciones preparadas no permiten comillas (鈥) y punto y coma (;) al final de la solicitud original y la declaraci贸n maliciosa DROP DATABASE nunca se ejecutar谩.

T煤 nunca debe utilizar declaraciones preparadas al enviar o recibir datos de la base de datos de la DOP.

Para usar declaraciones preparadas, debe escribir una nueva variante que llame al m茅todo preparar () objeto de base de datos.

En el c贸digo correcto:

<?php $servername = "mysql.hostinger.com"; $database = "u266072517_name"; $username = "u266072517_user"; $password = "buystuffpwd"; $sql = "mysql:host=$servername;dbname=$database;"; $dsn_Options = [PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION];

// Create a new connection to the MySQL database using PDO, $my_Db_Connection is an object
try { 
  $my_Db_Connection = new PDO($sql, $username, $password, $dsn_Options);
  echo "Connected successfully";
} catch (PDOException $error) {
  echo 'Connection error: ' . $error->getMessage();
}

// Set the variables for the person we want to add to the database
$first_Name = "Thom";
$last_Name = "Vial";
$email = "thom.v@some.com";

// Here we create a variable that calls the prepare() method of the database object
// The SQL query you want to run is entered as the parameter, and placeholders are written like this :placeholder_name
$my_Insert_Statement = $my_Db_Connection->prepare("INSERT INTO Students (name, lastname, email) VALUES (:first_name, :last_name, :email)");

// Now we tell the script which variable each placeholder actually refers to using the bindParam() method
// First parameter is the placeholder in the statement above - the second parameter is a variable that it should refer to
$my_Insert_Statement->bindParam(:first_name, $first_Name);
$my_Insert_Statement->bindParam(:last_name, $last_Name);
$my_Insert_Statement->bindParam(:email, $email);

// Execute the query using the data we just defined
// The execute() method returns TRUE if it is successful and FALSE if it is not, allowing you to write your own messages here
if ($my_Insert_Statement->execute()) {
  echo "New record created successfully";
} else {
  echo "Unable to create record";
}

// At this point you can change the data of the variables and execute again to add more data to the database
$first_Name = "John";
$last_Name = "Smith";
$email = "john.smith@email.com";
$my_Insert_Statement->execute();

// Execute again now that the variables have changed
if ($my_Insert_Statement->execute()) {
  echo "New record created successfully";
} else {
  echo "Unable to create record";
}

En las lineas 28, 29 y 30, usamos el m茅todo bindParam () objeto de base de datos. Tambi茅n hay un m茅todo bindValue () que es bastante diferente.

  • bindParam () – Este m茅todo eval煤a los datos cuando el m茅todo ejecutar () Se alcanza. La primera vez que el script llega a un m茅todo ejecutar () 茅l ve que el $ first_Name corresponde a 鈥淭hom鈥, vincula ese valor y ejecuta la consulta. Cuando el script alcanza el segundo m茅todo execute (), ve el $ first_Name ahora corresponde a “John”, vincula ese valor y vuelve a ejecutar 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 bindValue () Se alcanza. Como el valor de $ first_Name se estableci贸 en “Thom” cuando el bindValue () se ha logrado, se utilizar谩 cada vez que un m茅todo ejecutar () est谩 llamado a $ my_Insert_Statement.

Note que usamos la variante $ first_Name y le dimos otro valor la segunda vez. Si verifica la base de datos despu茅s de ejecutar el script, tendr谩 ambos nombres definidos, a pesar de la variable $ first_Name ser equivalente a “John” al final del gui贸n. Recuerde que PHP eval煤a todo el script antes de ejecutarlo.

Si actualiza el script y lo reemplaza bindParam con bindValue, ingresar谩 鈥淭hom Vail鈥 dos veces en la base de datos y se ignorar谩 鈥淛ohn Smith鈥.

C贸mo confirmar una operaci贸n exitosa y resolver errores comunes

Si la solicitud que ejecutamos e insertamos en la base de datos MySQL funcion贸, ver谩 un mensaje como el siguiente. B谩sicamente, dice que la conexi贸n se realiz贸 con 茅xito y tambi茅n se cre贸 un nuevo registro con 茅xito. En otras palabras, conseguiste insertar datos PHP MySQL.

Connect Successfully
New record created successfully

C贸mo solucionar errores comunes

Sin embargo, hay situaciones en las que el nuevo registro presentar谩 un error con la inserci贸n de SQL. Pero no se preocupe, hay algunas formas de corregir estos errores de MySQL.

MySQLi

En cualquier otro caso, aparecer谩 una imagen de error. Por ejemplo, cometemos un error de sintaxis en nuestro c贸digo y el mensaje que aparecer谩 es algo muy similar al de abajo.

Connect successfully
Error: INSERT INTO students {name, lastname, email} VALUES ('Test', 'Testing', 'Testing@testing.com')
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '{name, lastname, email} VALUES ('Test', 'Testing', 'Test@testingcom')' at line 1"

Como podemos ver, la primera parte de nuestro c贸digo est谩 bien. La conexi贸n se estableci贸 con 茅xito, pero nuestra Consulta SQL encontr贸 un error.

"Error: INSERT INTO Students {name, lastname, email} VALUES ('Thom', 'Vial', 'thom.v@some.com') You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '{name, lastname, email} VALUES ('Thom', 'Vial', 'thom.v@some.com')' at line 1"

Hay un error de sintaxis que desafortunadamente hizo que fallara nuestro script. El error estaba aqu铆:

$sql = "INSERT INTO Students {name, lastname, email} VALUES ('Thom', 'Vial', 'thom.v@some.com')";

Como puede ver, usamos las llaves “{}” en lugar de las llaves “[]鈥. Y eso no es correcto, algo que hizo que nuestro script se帽alara el error y no se ejecutara.

RFQ C贸mo usar PHP para insertar datos en una base de datos MySQL

En la l铆nea 7 de la conexi贸n PDO, el modo de error se establece en mostrar todas las excepciones. Si esto se hubiera dejado fuera del script y la solicitud hubiera fallado, no habr铆a recibido ning煤n mensaje de error. Con las excepciones habilitadas, es el problema espec铆fico el que aparece, aumentando tus posibilidades de solucionarlo.

Esto solo debe usarse al desarrollar un script, ya que puede exponer los nombres de la base de datos y la tabla. Algo que quiz谩s prefiera ocultar de cualquier tipo de intento malicioso de acceder a sus datos. En el caso anterior donde se usaron las claves en lugar de los corchetes, el error se parece al c贸digo siguiente.

Fatal error: Uncaught exception 'PDOException' with message 'SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '{name, lastname, email} VALUES ('Thom', 'Vial', 'thom.v@some.com')' at line 1"

Otros posibles problemas que puede encontrar:

  • Columnas especificadas incorrectamente (columnas inexistentes o mal escritas).
  • Se asigna un tipo de valor a otro tipo de columna. Por ejemplo, si intentamos asignar el n煤mero “47 鈥 en columna Nombre, encontraremos un error porque debe ser un valor de cadena. Pero si se da un n煤mero entre comillas, por ejemplo “47鈥, Eso funcionar铆a porque nuestro n煤mero funcionar铆a porque nuestro n煤mero se asignar铆a como una cadena a la columna.
  • Intente insertar datos en una tabla que no existe o cometa errores tipogr谩ficos.

Todos estos errores se pueden corregir f谩cilmente si sigue las instrucciones del mensaje de error o si corrige los mensajes de error.

Despu茅s de agregar datos con 茅xito, deber铆amos verlos agregados a nuestra base de datos. Aqu铆 hay un ejemplo de una tabla y agregamos nuestros datos como se ve desde phpMyAdmin.

Conclusi贸n

En este tutorial, aprendi贸 c贸mo insertar datos en MySQL con PHP utilizando MySQLi y RFQ. Tambi茅n aprendi贸 a solucionar problemas de conexi贸n comunes. Insertar datos en MySQL con PHP es extremadamente 煤til para cualquiera que est茅 aprendiendo a codificar o construir un sitio web.