Usando Perl para acceder a su Base MySQL

Este artículo muestra cómo conectar un script Perl con una base MySQL del hosting usando el módulo DBI. Perl y DBI ya están disponibles en la cuenta. El script se ejecuta en el servidor, así que el servidor de la base es localhost.

¿Para qué sirve?

Con DBI podés correr consultas desde un programa Perl del sitio. El esquema es siempre el mismo:

  • Conectar con la base, el usuario y la contraseña de MySQL.
  • Preparar y ejecutar la sentencia.
  • Leer los resultados cuando la consulta es un SELECT.
  • Cerrar la consulta y la conexión.

Datos de conexión: salen de cPanel → Bases de datos → Bases de datos MySQL. Usá el nombre completo de la base y del usuario, con el prefijo de la cuenta. El host del script es localhost. El acceso remoto es para un programa fuera del hosting, no para este caso.

Consultar registros

Guardá el archivo como consulta.pl. Reemplazá la base, el usuario, la contraseña y los nombres de la tabla por los tuyos.

#!/usr/bin/perl
use strict;
use warnings;
use DBI;

my $database = 'cuenta_tienda';
my $user     = 'cuenta_app';
my $password = 'la_clave';

my $dsn = "DBI:mysql:database=$database;host=localhost";

my $dbh = DBI->connect($dsn, $user, $password, {
    RaiseError => 1,
    PrintError => 0,
    mysql_enable_utf8mb4 => 1,
}) or die "No se pudo conectar: $DBI::errstr\n";

my $sth = $dbh->prepare(
    'SELECT nombre FROM telefonos WHERE telefono LIKE ?'
);
$sth->execute('518%');

while (my ($nombre) = $sth->fetchrow_array) {
    print "$nombre\n";
}

$sth->finish;
$dbh->disconnect;

El ? es un marcador: el valor 518% entra por execute y no se pega dentro del texto SQL. LIKE '518%' trae los teléfonos que empiezan con 518. El while recorre todas las filas. Cada nombre queda en $nombre.

Para usarlo desde el navegador, el archivo va en cgi-bin, con permiso de ejecución, y antes del primer print tiene que salir este encabezado:

print "Content-Type: text/html; charset=utf-8\n\n";

Insertar, actualizar o borrar

Esas sentencias no devuelven filas. No uses fetchrow_array. do ejecuta la consulta y devuelve la cantidad de filas afectadas.

my $filas = $dbh->do(
    'UPDATE telefonos SET nombre = ? WHERE telefono = ?',
    undef,
    'Ana',
    '5185550100'
);

INSERT y DELETE se escriben igual: cambiá la sentencia y los valores del final. JOIN, subconsultas, GROUP BY y ORDER BY también van dentro del texto SQL. La conexión y el prepare no cambian.

Importante: no dejes el script, con la contraseña adentro, en una carpeta pública de donde se pueda descargar. Ubicarlo en cgi-bin o fuera de public_html. Los nombres de la tabla y de las columnas tienen que ser exactamente los de la base. Un UPDATE o un DELETE sin WHERE afecta a todas las filas.

Problemas frecuentes

  • No se pudo conectar: revisá el nombre completo de la base y del usuario, la contraseña de MySQL y que el usuario esté añadido a esa base. El host del script es localhost.
  • install_driver(mysql) failed: en la cuenta no está disponible el controlador DBD::mysql.
  • La tabla no existe: el nombre en la consulta no coincide con el de la base, incluidas mayúsculas y minúsculas.
  • El SELECT no muestra nada: no hay filas que cumplan la condición, o el resultado se leyó una sola vez y el recorrido ya terminó.
  • El navegador baja el archivo o muestra el código: no está en cgi-bin o no tiene permiso de ejecución. Si se ejecuta y responde en blanco, falta el encabezado Content-Type.

Si el script no conecta, DBI no está disponible o la consulta afecta datos que no debía, abrí un caso desde el portal de clientes o consultá por el chat online del sitio.

  • perl para acceder a una base de datos mysql
  • 48 Los Usuarios han Encontrado Esto Útil
¿Fue útil la respuesta?

Artículos relacionados

Cómo crear una base de datos MySql

Este artículo explica cómo crear una base de datos MySQL en cPanel, cómo importar un archivo .sql...

Bases de datos MysSql

Una base de datos MySQL guarda la información de aplicaciones como WordPress, tiendas online o...

Cómo acceder de forma remota (hogar o trabajo) a base de datos MySQL

Este artículo explica cómo habilitar el acceso remoto a MySQL para conectarte desde tu equipo, u...

Cómo administrar bases de datos MySQL

Este artículo explica cómo administrar una base de datos MySQL con phpMyAdmin desde cPanel:...

Comandos básicos en MySQL

Este artículo reúne comandos básicos de MySQL para ejecutar en la pestaña SQL de phpMyAdmin....