Advertisement
  1. Code
  2. PHP
  3. PHP Scripts

Cómo conectar PHP a MySQL

Scroll to top

() translation by (you can also view the original English article)

¿Quieres aprender cómo conectar PHP a MySQL y realizar diferentes tipos de operaciones en bases de datos? En este artículo haremos exactamente eso: discutiremos sobre la conectividad a las bases de datos MySQL en PHP.

PHP proporciona diferentes maneras para conectarse a un servidor de bases de datos MySQL. Hasta PHP 5.5, una de las formas más populares era a través de la extensión MySQL: esta proporcionaba una manera "procedimental" para conectarse al servidor MySQL. Sin embargo, esta extensión se ha vuelto obsoleta a partir de PHP 5.5, por lo que no vamos a discutir eso.

Las dos maneras actuales de entre las que puedes elegir son PDO y MySQLi. La extensión PDO (PHP Data Objects, u Objetos de datos de PHP) es compatible con diferentes tipos de servidores de bases de datos subyacentes junto con el servidor MySQL. Y, por lo tanto, es portátil en caso de que decidas cambiar el servidor de bases de datos subyacente en cualquier momento en el futuro. Por otro lado, la extensión MySQLi es específica para el servidor MySQL y proporciona una mejor velocidad y desempeño. La extensión MySQLi también puede ser un poco más simple de entender al principio, ya que te permite escribir consultas SQL directamente. Si has trabajado con bases de datos SQL en el pasado, esto te será muy familiar. Por otro lado, la extensión PDO crea una poderosa asociación de la base de datos SQL con tu código PHP y te permite realizar muchas operaciones de bases de datos sin necesidad de conocer los detalles de SQL ni de la base de datos. A largo plazo y para proyectos más grandes, esto puede ahorrar mucho esfuerzo al escribir código y al depurar.

En este artículo usaré la extensión MySQLi. Pero puedes aprender más acerca de la extensión PDO aquí en Envato Tuts+.

  • PHP
    Construye rápidamente una interfaz CRUD en PHP con la herramienta PDO Advanced CRUD Generator
    Sajal Soni

En este artículo cubriremos los siguientes temas:

  • cómo crear una conexión MySQL
  • cómo insertar, actualizar y eliminar registros
  • cómo recuperar registros

Los mejores scripts en PHP de bases de datos en CodeCanyon

En esta publicación te mostraré cómo crear una conexión "bare-metal" a una base de datos MySQL desde PHP. Esta es una habilidad que es importante tener, pero si quieres ahorrar tiempo en tu siguiente proyecto, quizá quieras actualizar a un script de bases de datos profesional. Esto ahorrará tiempo y facilitará tu trabajo.

Explora los mejores y más útiles scripts de bases de datos en PHP alguna vez creados en CodeCanyon. Con un pago único de bajo costo, puedes comprar estos temas de WordPress de alta calidad y mejorar la experiencia en tu sitio web para ti y tus visitantes.

PHP Database Abstraction ScriptsPHP Database Abstraction ScriptsPHP Database Abstraction Scripts

Estos son algunos de los mejores scripts de bases de datos en PHP disponibles en CodeCanyon para 2020.

  • PHP
    Comparando capas de abstracción de bases de datos para PHP y complementos CRUD
    Sajal Soni

Crea una conexión MySQL

En esta sección, te mostraré cómo puedes conectarte al servidor MySQL desde tu script de PHP y crear un objeto de conexión. Más adelante, este objeto de conexión será usado para ejecutar consultas, recuperar resultados y manipular los registros de la base de datos. Como discutimos anteriormente, vamos a usar la extensión MySQLi de PHP para este artículo.

La extensión MySQLi proporciona dos maneras diferentes de realizar operaciones en la base de datos. Puedes usar ya sea la forma orientada a objetos o la forma procedimental, pero ya que este tutorial está dirigido a los principiantes, me quedaré con la forma procedimental. Si te interesa ver algunos fragmentos de código orientado a objetos, puedes dejarme un mensaje en la sección de comentarios a continuación y estaré encantado de proporcionártelos.

Para comenzar, ve y crea el archivo db_connect.php dentro de la raíz de tu documento con el siguiente contenido.

1
<?php
2
$mysqli_link = mysqli_connect("{HOST_NAME}", "{DATABASE_USERNAME}", "{DATABASE_PASSWORD}", "{DATABASE_NAME}");
3
4
if (mysqli_connect_errno()) 
5
{
6
    printf("MySQL connection failed with the error: %s", mysqli_connect_error());
7
    exit;
8
}

Ten en cuenta que he usado marcadores de posición en la función mysqli_connect; tienes que reemplazarlos con valores reales.

Echemos un vistazo a cada marcador de posición para ver qué significa.

  • {HOST_NAME}: Este representa el nombre del host o la dirección IP de tu servidor MySQL. Si instalaste el servidor MySQL en el mismo sistema junto con PHP, debes usar localhost o 127.0.0.1. Por otro lado, si estás usando un servidor MySQL que se encuentra alojado externamente, puedes usar el nombre del host o la dirección IP correspondiente.
  • {DATABASE_USERNAME}: Este representa el nombre de usuario de tu usuario de MySQL. Básicamente, este es el nombre de usuario que utilizas para conectarte a tu servidor MySQL.
  • {DATABASE_PASSWORD}: Este representa la contraseña de tu usuario de MySQL. Nuevamente, esta es la contraseña que utilizas para conectarte a tu servidor MySQL junto con el nombre de usuario de MySQL.
  • {DATABASE_NAME}: Este es el nombre de la base de datos de MySQL a la que quieres conectarte. Una vez creada la conexión, enviarás consultas a esta base de datos para realizar operaciones adicionales.

Continúa y sustituye estos marcadores de posición con valores reales. En mi caso, he instalado el servidor MySQL de forma local y tengo un usuario cuyo nombre de MySQL es tutsplus-demo-user y cuya contraseña de MySQL es tutsplus-demo-password. Y con eso, el ejemplo anterior se ve así:

1
<?php
2
$mysqli_link = mysqli_connect("localhost", "tutsplus-demo-user", "tutsplus-demo-password", "tutsplus-demo-database");
3
4
if (mysqli_connect_errno()) 
5
{
6
    printf("MySQL connection failed with the error: %s", mysqli_connect_error());
7
    exit;
8
}

Si ejecutas este ejemplo, este debe crear un vínculo a una conexión a la base de datos y asignárselo a la variable $mysqli_link, que utilizaremos posteriormente para realizar diferentes tipos de operaciones de bases de datos.

Por otro lado, si hay algún problema al establecer la conexión, la función mysqli_connect_errno devolverá un código de error, mientras que la función mysqli_connect_error mostrará el error en sí. En el ejemplo anterior lo hemos usado con fines de depuración.

Ahora tenemos una conexión exitosa al servidor MySQL y veremos cómo usarla para realizar diferentes tipos de consultas a partir de la siguiente sección.

Cómo insertar registros

En la sección anterior, discutimos cómo usar la función mysqli_connect para configurar una conexión a una base de datos con el servidor MySQL. En esta sección vamos a continuar discutiendo cómo usar el objeto de conexión para realizar las consultas INSERT (INSERTAR).

Si deseas seguir los ejemplos discutidos en este artículo, necesitarás crear la siguiente tabla MySQL en tu base de datos. Esta es la tabla que vamos a usar en todos los ejemplos de ahora en adelante.

1
CREATE TABLE `students` (
2
  `id` int(11) NOT NULL AUTO_INCREMENT,
3
  `first_name` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL,
4
  `last_name` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL,
5
  `email` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL,
6
  PRIMARY KEY (`id`)
7
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

Sigue adelante y crea la tabla MySQL anterior usando el software phpMyAdmin o la herramienta de la línea de comandos.

A continuación vamos a crear el archivo db_insert.php con el siguiente contenido. Por favor no olvides sustituir los parámetros de la conexión con tus propios datos.

1
<?php
2
$mysqli_link = mysqli_connect("localhost", "tutsplus-demo-user", "tutsplus-demo-password", "tutsplus-demo-database");
3
4
if (mysqli_connect_errno())
5
{
6
    printf("MySQL connection failed with the error: %s", mysqli_connect_error());
7
    exit;
8
}
9
10
$insert_query = "INSERT INTO students(`first_name`,`last_name`,`email`)

11
VALUES ('". mysqli_real_escape_string($mysqli_link, 'John') ."','". mysqli_real_escape_string($mysqli_link, 'Wood') ."','". mysqli_real_escape_string($mysqli_link, 'john.wood@tutsplus.com') ."')";
12
 
13
// run the insert query

14
If (mysqli_query($mysqli_link, $insert_query)) {
15
    echo 'Record inserted successfully.';
16
}
17
 
18
// close the db connection

19
mysqli_close($mysqli_link);
20
?>

Primero configuramos una conexión a la base de datos usando la función mysqli_connect, como discutimos anteriormente. Después de eso, hemos preparado la consulta de inserción (insert) que vamos a ejecutar posteriormente. Es importante tomar en cuenta que hemos usado la función mysqli_real_escape_string para escapar valores de tipo cadena que vamos a usar en la consulta de inserción. Específicamente, debes usar esta función cuando estás trabajando con valores enviados a través de variables $_POST para evitar la inyección SQL.

Finalmente, hemos usado la función mysqli_query, que recibe dos argumentos. El primer argumento es el vínculo a la conexión activa en la que se ejecutará la consulta. Y el segundo argumento es la consulta MySQL que queremos ejecutar. La función mysqli_query devuelve el valor TRUE si la consulta se ejecutó con éxito.

Para finalizar, hemos usado la función mysqli_close para cerrar la conexión activa a la base de datos. Es una buena práctica cerrar la conexión a la base de datos una vez que hayas terminado las operaciones en la misma.

Continúa y ejecuta el script, ¡y eso debería insertar un registro en la tabla students!

Cómo actualizar registros

La actualización de los registros en una base de datos desde el script de PHP es muy similar a la operación de inserción, con la única diferencia de que la consulta va a ser la de actualización (update) en vez de la consulta de inserción (insert).

Modifiquemos el ejemplo anterior y actualicemos el campo first_name, como se muestra en el siguiente ejemplo.

1
<?php
2
$mysqli_link = mysqli_connect("localhost", "tutsplus-demo-user", "tutsplus-demo-password", "tutsplus-demo-database");
3
4
if (mysqli_connect_errno())
5
{
6
    printf("MySQL connection failed with the error: %s", mysqli_connect_error());
7
    exit;
8
}
9
10
$update_query = "UPDATE students SET `first_name` = '". mysqli_real_escape_string($mysqli_link,'Johnny') ."' WHERE `email` = 'john.wood@tutsplus.com'";
11
 
12
// run the update query

13
If (mysqli_query($mysqli_link, $update_query)) {
14
    echo 'Record updated successfully.';
15
}
16
 
17
// close the db connection

18
mysqli_close($mysqli_link);
19
?>

Sigue adelante y ejecuta el script, y eso debería actualizar el registro en la tabla students.

Cómo seleccionar registros

En las secciones anteriores, discutimos cómo puedes insertar y actualizar registros en una base de datos a partir del script de PHP. En esta sección, exploraremos cómo puedes recuperar registros de una base de datos usando los diferentes tipos de funciones MySQLi.

En primer lugar, debes usar la función mysqli_query para ejecutar la consulta de selección (select). Tras la ejecución exitosa de la consulta de selección, la función mysqli_query devuelve el objeto mysqli de resultados, el cuál podemos usar para iterar a través de los registros devueltos por la consulta de selección. Cuando se trata de recuperar e iterar a través de los registros del objeto MySQLi de resultados, existen diferentes funciones disponibles.

  • mysqli_fetch_all: Te permite recuperar todas las filas del resultado al mismo tiempo. También puedes especificar si quieres los resultados como un arreglo asociativo, un arreglo numérico o ambos.
  • mysqli_fetch_array: Te permite recuperar una fila a la vez. Y, por lo tanto, tendrás que usar el bucle while para iterar a través de todos los registros. Nuevamente, puedes especificar si quieres una fila de resultados como un arreglo asociativo, un arreglo numérico o ambos.
  • mysqli_fetch_assoc: Recupera una fila de resultados a la vez como un arreglo asociado.
  • mysqli_fetch_object: Recupera una fila de resultados a la vez como un objeto.

Echemos un vistazo al siguiente ejemplo para entender cómo funciona:

1
<?php
2
$mysqli_link = mysqli_connect("localhost", "tutsplus-demo-user", "tutsplus-demo-password", "tutsplus-demo-database");
3
4
if (mysqli_connect_errno())
5
{
6
    printf("MySQL connection failed with the error: %s", mysqli_connect_error());
7
    exit;
8
}
9
10
$select_query = "SELECT * FROM students LIMIT 10";
11
$result = mysqli_query($mysqli_link, $select_query);
12
13
while ($row = mysqli_fetch_array($result, MYSQLI_ASSOC)) {
14
    echo "First Name:" . $row['first_name'] . "<br/>";
15
    echo "Last Name:" . $row['last_name'] . "<br/>";
16
    echo "Email:" . $row['email'] . "<br/>";
17
    echo "<br/>";
18
}
19
20
// close the db connection

21
mysqli_close($mysqli_link);
22
?>

Como puedes ver, hemos usado la función mysqli_fetch_array con la opción MYSQLI_ASSOC como segundo argumento. Y por lo tanto, esta devuelve la fila resultante como un arreglo asociado. Si hubieras usado la opción MYSQLI_NUM, habrías accedido a ella a través de $row[0]$row[1] y $row[2] en el ejemplo anterior.

Por otro lado, si usaras la función mysqli_fetch_object en el ejemplo anterior, podrías acceder a los valores como se muestra en el siguiente fragmento de código. Para mantener la brevedad, solamente voy a incluir el fragmento de código del bucle while.

1

2

3
while ($row = mysqli_fetch_object($result)) {
4
    echo "First Name:" . $row->first_name . "<br/>";
5
    echo "Last Name:" . $row->last_name . "<br/>";
6
    echo "Email:" . $row->email . "<br/>";
7
    echo "<br/>";
8
}
9
...
10
...

Así que de esta manera puedes recuperar y mostrar registros de la base de datos MySQLi.

Cómo eliminar registros

En esta sección veremos cómo ejecutar consultas de eliminación (delete) a partir del script de PHP. La eliminación de registros de una base de datos es una operación bastante sencilla, ya que solamente necesitas preparar la consulta de eliminación y ejecutarla con la función mysqli_query.

Echemos un vistazo al siguiente ejemplo para ver cómo funciona.

1
<?php
2
$mysqli_link = mysqli_connect("localhost", "tutsplus-demo-user", "tutsplus-demo-password", "tutsplus-demo-database");
3
4
if (mysqli_connect_errno())
5
{
6
    printf("MySQL connection failed with the error: %s", mysqli_connect_error());
7
    exit;
8
}
9
10
$delete_query = "DELETE FROM students WHERE `email` = 'john.wood@tutsplus.com'";
11
 
12
// run the update query

13
If (mysqli_query($mysqli_link, $delete_query)) {
14
    echo 'Record deleted successfully.';
15
}
16
 
17
// close the db connection

18
mysqli_close($mysqli_link);
19
?>

Como puedes observar, todo es igual a lo que ya hemos visto con los ejemplos para la inserción y actualización, con la excepción de que la consulta es, en esta caso, una consulta de eliminación.

Así es como puedes realizar diferentes tipos de operaciones de bases de datos desde el script de PHP.

Y, con eso, hemos llegado al final de este tutorial. Lo que hemos discutido hasta ahora el día de hoy debe ayudarte a fortalecer los conceptos de conectividad de bases de datos, específicamente cómo conectar PHP a MySQL y realizar diferentes tipos de operaciones.

Conclusión

En este artículo discutimos cómo conectar PHP a una base de datos MySQL usando la extensión MySQLi. Desde la configuración de una conexión a una base de datos hasta la ejecución de diferentes tipos de consultas, discutimos casi todos los aspectos de la conectividad de las bases de datos.

Aunque he intentado mantener las cosas tan simples como me es posible, si algo todavía te parece confuso, o si quieres saber sobre algún aspecto específico a detalle, siéntete en la libertad de publicar tus preguntas usando el canal mostrado a continuación.

Los mejores scripts en PHP en CodeCanyon

Explora miles de los mejores y más útiles scripts de PHP alguna vez creados en CodeCanyon. Con un pago único de bajo costo, puedes comprar estos temas de WordPress de alta calidad y mejorar la experiencia en tu sitio web para ti y tus visitantes.

Estos son algunos de los scripts de PHP mejor vendidos y más prometedores disponibles en CodeCanyon para 2020.

  • PHP
    Los 14 mejores scripts en PHP para calendarios de eventos y de reservas
    Kyle Sloka-Frey
  • PHP
    Los 10 mejores scripts acortadores de URLs en PHP
    Monty Shokeen
  • PHP
    Los 12 mejores scripts en PHP para formularios de contacto
    Nona Blackman
  • PHP
    Comparando los 5 mejores generadores de formularios en PHP
    Nona Blackman
  • PHP
    Crea hermosos formularios con PHP Form Builder
    Ashraff Hathibelagal
Advertisement
Did you find this post useful?
Want a weekly email summary?
Subscribe below and we’ll send you a weekly email summary of all new Code tutorials. Never miss out on learning about the next big thing.
Advertisement
Looking for something to help kick start your next project?
Envato Market has a range of items for sale to help get you started.