Taller > PHP > Base de Datos MySQL
Crear una Tabla MySQL con PHP
Una tabla en una base de datos MySQL tiene su propio nombre único y consta de columnas y filas. Cada columna tiene un tipo de dato específico, y cada fila representa un conjunto de datos.
En este artículo, aprenderás a crear una tabla en MySQL usando PHP con las extensiones MySQLi y PDO, las cuales son recomendadas para trabajar con bases de datos en las versiones modernas de PHP.
Crear una Tabla en MySQL
Para crear una tabla en MySQL, se utiliza la declaración SQL CREATE TABLE. A continuación, veremos cómo crear una tabla llamada MyGuests con cinco columnas: id, firstname, lastname, email, y reg_date.
id: Entero sin signo (UNSIGNED) que se incrementa automáticamente y sirve como clave primaria.
firstname y lastname: Cadenas de hasta 30 caracteres, sin valores nulos permitidos.
email: Cadena de hasta 50 caracteres, permitiendo valores nulos.
reg_date: Un campo de tipo TIMESTAMP que registra la fecha y hora de registro y se actualiza automáticamente.
Atributos de las Columnas
Cada columna en una tabla puede tener atributos específicos que definen cómo se almacenarán los datos:
NOT NULL: Evita que se almacenen valores nulos en la columna.
DEFAULT: Establece un valor predeterminado para la columna si no se proporciona uno.
UNSIGNED: Se utiliza para números y limita los valores a positivos o cero.
AUTO_INCREMENT: Incrementa automáticamente el valor de la columna con cada nuevo registro.
PRIMARY KEY: Identifica de manera única cada fila en la tabla.
Crear la Tabla Usando MySQLi Orientado a Objetos
El siguiente ejemplo utiliza la extensión MySQLi en su modo orientado a objetos para crear la tabla MyGuests.
<?php
$servidor = "localhost";
$usuario = "usuario";
$contraseña = "contraseña";
$base_datos = "mi_base_datos";
// Crear conexión
$conn = new mysqli($servidor, $usuario, $contraseña, $base_datos);
// Verificar conexión
if ($conn->connect_error) {
die("Error en la conexión: " . $conn->connect_error);
}
// SQL para crear la tabla
$sql = "CREATE TABLE MyGuests (
id INT(6) UNSIGNED AUTO_INCREMENT PRIMARY KEY,
firstname VARCHAR(30) NOT NULL,
lastname VARCHAR(30) NOT NULL,
email VARCHAR(50),
reg_date TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
)";
// Ejecutar la consulta
if ($conn->query($sql) === TRUE) {
echo "Tabla MyGuests creada exitosamente";
} else {
echo "Error al crear la tabla: " . $conn->error;
}
// Cerrar la conexión
$conn->close();
?>
Descripción:
En este ejemplo, primero se establece una conexión a la base de datos utilizando mysqli en modo orientado a objetos. Luego, se ejecuta la consulta CREATE TABLE para crear la tabla con las columnas y atributos especificados. Si la tabla se crea con éxito, se muestra un mensaje de confirmación; en caso de error, se muestra un mensaje detallado con el error. Finalmente, se cierra la conexión con la base de datos.
Crear la Tabla Usando MySQLi Procedural
Este ejemplo utiliza MySQLi en su modo procedural para realizar la misma operación.
<?php
$servidor = "localhost";
$usuario = "usuario";
$contraseña = "contraseña";
$base_datos = "mi_base_datos";
// Crear conexión
$conn = mysqli_connect($servidor, $usuario, $contraseña, $base_datos);
// Verificar conexión
if (!$conn) {
die("Error en la conexión: " . mysqli_connect_error());
}
// SQL para crear la tabla
$sql = "CREATE TABLE MyGuests (
id INT(6) UNSIGNED AUTO_INCREMENT PRIMARY KEY,
firstname VARCHAR(30) NOT NULL,
lastname VARCHAR(30) NOT NULL,
email VARCHAR(50),
reg_date TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
)";
// Ejecutar la consulta
if (mysqli_query($conn, $sql)) {
echo "Tabla MyGuests creada exitosamente";
} else {
echo "Error al crear la tabla: " . mysqli_error($conn);
}
// Cerrar la conexión
mysqli_close($conn);
?>
Descripción:
En este ejemplo, utilizamos la API procedural de MySQLi para crear la tabla MyGuests. Primero, establecemos la conexión a la base de datos, luego ejecutamos la consulta para crear la tabla y verificamos si la operación fue exitosa. Si la tabla se crea correctamente, mostramos un mensaje de éxito, y si hay un error, mostramos los detalles del mismo.
Crear la Tabla Usando PDO
Finalmente, aquí te mostramos cómo crear la tabla utilizando PDO. PDO es especialmente útil si tu proyecto necesita conectarse a diferentes tipos de bases de datos además de MySQL.
<?php
$servidor = "localhost";
$usuario = "usuario";
$contraseña = "contraseña";
$base_datos = "mi_base_datos_pdo";
try {
// Crear conexión PDO
$conn = new PDO("mysql:host=$servidor;dbname=$base_datos", $usuario, $contraseña);
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
// SQL para crear la tabla
$sql = "CREATE TABLE MyGuests (
id INT(6) UNSIGNED AUTO_INCREMENT PRIMARY KEY,
firstname VARCHAR(30) NOT NULL,
lastname VARCHAR(30) NOT NULL,
email VARCHAR(50),
reg_date TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
)";
// Ejecutar la consulta
$conn->exec($sql);
echo "Tabla MyGuests creada exitosamente";
} catch(PDOException $e) {
echo "Error al crear la tabla: " . $e->getMessage();
}
// Cerrar la conexión
$conn = null;
?>
Descripción:
En este ejemplo, primero creamos una conexión a la base de datos utilizando PDO. A continuación, ejecutamos la consulta SQL CREATE TABLE para crear la tabla MyGuests. PDO permite manejar excepciones, por lo que si algo falla, capturamos el error y mostramos un mensaje con los detalles. Finalmente, cerramos la conexión a la base de datos.
Conclusión
Crear una tabla en una base de datos MySQL con PHP es un proceso sencillo que puede realizarse usando tanto MySQLi como PDO. Cada tabla debe tener al menos una columna que sirva como clave primaria para identificar de manera única cada fila. En los ejemplos anteriores, vimos cómo crear la tabla MyGuests con diferentes métodos, asegurándonos de manejar correctamente los errores en caso de fallos en la consulta.
Recuerda que es importante planificar cuidadosamente la estructura de tu tabla antes de crearla, asegurándote de seleccionar los tipos de datos adecuados y las restricciones necesarias (como NOT NULL o DEFAULT), según las necesidades de tu aplicación.