Skip to main content
Post Reopened by Michael K
Added some context
Source Link
Michael K
  • 2.9k
  • 1
  • 22
  • 24

I've been experimenting with Perl and MySql and wrote this code for connecting and writing to a database:

#   MySQL DDL to create database used by code 
#
#   CREATE DATABASE sampledb;
#
#   USE sampledb;
#   
#   CREATE TABLE `dbtable` (
#     `id`  int(11) NOT NULL AUTO_INCREMENT,
#     `demo` longtext,
#     PRIMARY KEY  (`id`)
#   ) ENGINE=InnoDB DEFAULT CHARSET=utf8;

# PERL MODULES
use strict;
use warnings;
use DBI; #http://dbi.perl.org

# CONFIG VARIABLES
my $platform = "mysql";
my $database = "sampledb";
my $host = "localhost";
my $port = "3306";
my $username = "root";
my $password = "password";

# DATA SOURCE NAME
my $dsn = "dbi:$platform:$database:$host:$port";

# PERL DBI CONNECT
my $connect = DBI->connect($dsn, $username, $password);

# VARS for Examples
my $query;
my $query_handle;
my $id;
my $demo;

# Example 1 using prepare() and execute() INSERT

    # SAMPLE VARIABLE AND VALUES TO PASS INTO SQL STATEMENT
    $id = 1;
    $demo = "test";

    # INSERT
    $query = "INSERT INTO dbtable (id, demo) VALUES ('$id', '$demo')";
    $query_handle = $connect->prepare($query);
    $query_handle->execute();
    undef $query;

# Example 2 using do() UPDATE   

    # SAMPLE VARIABLE AND VALUES TO PASS INTO SQL STATEMENT
    $id = 1;
    $demo = "test 2";

    # UPDATE
    $query = "UPDATE dbtable SET demo = '$demo' WHERE id = $id";
    $query_handle = $connect->do($query);
    undef $query;

Is this the correct/idiomatic way to access a database in Perl? Are there any other improvements I could make?

#   MySQL DDL to create database used by code 
#
#   CREATE DATABASE sampledb;
#
#   USE sampledb;
#   
#   CREATE TABLE `dbtable` (
#     `id`  int(11) NOT NULL AUTO_INCREMENT,
#     `demo` longtext,
#     PRIMARY KEY  (`id`)
#   ) ENGINE=InnoDB DEFAULT CHARSET=utf8;

# PERL MODULES
use strict;
use warnings;
use DBI; #http://dbi.perl.org

# CONFIG VARIABLES
my $platform = "mysql";
my $database = "sampledb";
my $host = "localhost";
my $port = "3306";
my $username = "root";
my $password = "password";

# DATA SOURCE NAME
my $dsn = "dbi:$platform:$database:$host:$port";

# PERL DBI CONNECT
my $connect = DBI->connect($dsn, $username, $password);

# VARS for Examples
my $query;
my $query_handle;
my $id;
my $demo;

# Example 1 using prepare() and execute() INSERT

    # SAMPLE VARIABLE AND VALUES TO PASS INTO SQL STATEMENT
    $id = 1;
    $demo = "test";

    # INSERT
    $query = "INSERT INTO dbtable (id, demo) VALUES ('$id', '$demo')";
    $query_handle = $connect->prepare($query);
    $query_handle->execute();
    undef $query;

# Example 2 using do() UPDATE   

    # SAMPLE VARIABLE AND VALUES TO PASS INTO SQL STATEMENT
    $id = 1;
    $demo = "test 2";

    # UPDATE
    $query = "UPDATE dbtable SET demo = '$demo' WHERE id = $id";
    $query_handle = $connect->do($query);
    undef $query;

I've been experimenting with Perl and MySql and wrote this code for connecting and writing to a database:

#   MySQL DDL to create database used by code 
#
#   CREATE DATABASE sampledb;
#
#   USE sampledb;
#   
#   CREATE TABLE `dbtable` (
#     `id`  int(11) NOT NULL AUTO_INCREMENT,
#     `demo` longtext,
#     PRIMARY KEY  (`id`)
#   ) ENGINE=InnoDB DEFAULT CHARSET=utf8;

# PERL MODULES
use strict;
use warnings;
use DBI; #http://dbi.perl.org

# CONFIG VARIABLES
my $platform = "mysql";
my $database = "sampledb";
my $host = "localhost";
my $port = "3306";
my $username = "root";
my $password = "password";

# DATA SOURCE NAME
my $dsn = "dbi:$platform:$database:$host:$port";

# PERL DBI CONNECT
my $connect = DBI->connect($dsn, $username, $password);

# VARS for Examples
my $query;
my $query_handle;
my $id;
my $demo;

# Example 1 using prepare() and execute() INSERT

    # SAMPLE VARIABLE AND VALUES TO PASS INTO SQL STATEMENT
    $id = 1;
    $demo = "test";

    # INSERT
    $query = "INSERT INTO dbtable (id, demo) VALUES ('$id', '$demo')";
    $query_handle = $connect->prepare($query);
    $query_handle->execute();
    undef $query;

# Example 2 using do() UPDATE   

    # SAMPLE VARIABLE AND VALUES TO PASS INTO SQL STATEMENT
    $id = 1;
    $demo = "test 2";

    # UPDATE
    $query = "UPDATE dbtable SET demo = '$demo' WHERE id = $id";
    $query_handle = $connect->do($query);
    undef $query;

Is this the correct/idiomatic way to access a database in Perl? Are there any other improvements I could make?

Post Closed as "not a real question" by Michael K
Source Link

Perl DBI Sample with MySQL DDL

#   MySQL DDL to create database used by code 
#
#   CREATE DATABASE sampledb;
#
#   USE sampledb;
#   
#   CREATE TABLE `dbtable` (
#     `id`  int(11) NOT NULL AUTO_INCREMENT,
#     `demo` longtext,
#     PRIMARY KEY  (`id`)
#   ) ENGINE=InnoDB DEFAULT CHARSET=utf8;

# PERL MODULES
use strict;
use warnings;
use DBI; #http://dbi.perl.org

# CONFIG VARIABLES
my $platform = "mysql";
my $database = "sampledb";
my $host = "localhost";
my $port = "3306";
my $username = "root";
my $password = "password";

# DATA SOURCE NAME
my $dsn = "dbi:$platform:$database:$host:$port";

# PERL DBI CONNECT
my $connect = DBI->connect($dsn, $username, $password);

# VARS for Examples
my $query;
my $query_handle;
my $id;
my $demo;

# Example 1 using prepare() and execute() INSERT

    # SAMPLE VARIABLE AND VALUES TO PASS INTO SQL STATEMENT
    $id = 1;
    $demo = "test";

    # INSERT
    $query = "INSERT INTO dbtable (id, demo) VALUES ('$id', '$demo')";
    $query_handle = $connect->prepare($query);
    $query_handle->execute();
    undef $query;

# Example 2 using do() UPDATE   

    # SAMPLE VARIABLE AND VALUES TO PASS INTO SQL STATEMENT
    $id = 1;
    $demo = "test 2";

    # UPDATE
    $query = "UPDATE dbtable SET demo = '$demo' WHERE id = $id";
    $query_handle = $connect->do($query);
    undef $query;