perl and mysql using apache server with perl cgi using mysql need to install dbi and dbd modules to...

29
Perl and MySQL • Using apache server with perl cgi • Using MySQL • Need to install dbi and dbd modules to your perl installation. • There are some good examples on this site: http://www.tutorialspoint.com/perl /perl_cgi.htm

Post on 19-Dec-2015

238 views

Category:

Documents


7 download

TRANSCRIPT

Page 1: Perl and MySQL Using apache server with perl cgi Using MySQL Need to install dbi and dbd modules to your perl installation. There are some good examples

Perl and MySQL

• Using apache server with perl cgi

• Using MySQL

• Need to install dbi and dbd modules to your perl installation.

• There are some good examples on this site: http://www.tutorialspoint.com/perl/perl_cgi.htm

Page 2: Perl and MySQL Using apache server with perl cgi Using MySQL Need to install dbi and dbd modules to your perl installation. There are some good examples

Using perl with mysql• If you are using ActivePerl, you may use ppm to install DBD-mysql.

For Perl 5.6, upgrade to Build 623 or later, then it is sufficient to runC:\perl>ppm install DBI C:\perl>ppm install DBD::mysql • If you need an HTTP proxy, you might need to set the environment

variable http_proxy, for example like this:• set http_proxy=http://myproxy.com:8080/ • As of this writing, DBD::mysql is missing in the ActivePerl 5.8.0

repository. However, Randy Kobes has kindly donated an own distribution and the following might succeed:

• C:\>ppm install http://theoryx5.uwinnipeg.ca/ppms/DBD-mysql.ppd

Page 3: Perl and MySQL Using apache server with perl cgi Using MySQL Need to install dbi and dbd modules to your perl installation. There are some good examples

Perl and db queries

• Using apache server with perl cgi

• Using MySQL

• Need to install dbi and dbd modules to your perl installation.

• See next slide screen shot for

C:\perl>ppm install dbi

Page 4: Perl and MySQL Using apache server with perl cgi Using MySQL Need to install dbi and dbd modules to your perl installation. There are some good examples

C:\perl>ppm install DBI

Page 5: Perl and MySQL Using apache server with perl cgi Using MySQL Need to install dbi and dbd modules to your perl installation. There are some good examples

Installing dbd:mysql (not in perl5.8)c;:\>ppm install

http://theoryx5.uwinnipeg.ca/ppms/DBD-mysql.ppd

Page 6: Perl and MySQL Using apache server with perl cgi Using MySQL Need to install dbi and dbd modules to your perl installation. There are some good examples

Using perl with mysql• If you are using ActivePerl, you may use ppm to install DBD-mysql.

For Perl 5.6, upgrade to Build 623 or later, then it is sufficient to runC:\perl>ppm install DBI C:\perl>ppm install DBD::mysql • If you need an HTTP proxy, you might need to set the environment

variable http_proxy, for example like this:• set http_proxy=http://myproxy.com:8080/ • As of this writing, DBD::mysql is missing in the ActivePerl 5.8.0

repository. However, Randy Kobes has kindly donated an own distribution and the following might succeed:

• C:\>ppm install http://theoryx5.uwinnipeg.ca/ppms/DBD-mysql.ppd

Page 7: Perl and MySQL Using apache server with perl cgi Using MySQL Need to install dbi and dbd modules to your perl installation. There are some good examples

You’ll need a table in some mysql database

Page 8: Perl and MySQL Using apache server with perl cgi Using MySQL Need to install dbi and dbd modules to your perl installation. There are some good examples

Using mysql

• You’ll need a network connection for this install

• Create a command prompt in perl/bin and run the ppm (program package manager)

• Type – Install DBI

Page 9: Perl and MySQL Using apache server with perl cgi Using MySQL Need to install dbi and dbd modules to your perl installation. There are some good examples

Using mysql: DOS window –lots of stuff installed

C:\PERL\BIN>ppmPPM - Programmer's Package Manager version 3.2.Copyright (c) 2001 ActiveState Corp. All Rights Reserved.ActiveState is a division of Sophos.Entering interactive shell. Using Term::ReadLine::Perl as readline library.Type 'help' to get started.ppm> install DBI====================Install 'DBI' version 1.50 in ActivePerl 5.8.7.813.====================Downloaded 558143 bytes.Extracting 73/73: blib/arch/auto/DBI/Driver_xst.hInstalling C:\Perl\site\lib\auto\DBI\dbd_xsh.hInstalling C:\Perl\site\lib\auto\DBI\DBI.bsInstalling C:\Perl\site\lib\auto\DBI\DBI.dllInstalling C:\Perl\site\lib\auto\DBI\DBI.expInstalling C:\Perl\site\lib\auto\DBI\dbi_sql.hInstalling C:\Perl\site\lib\auto\DBI\Driver.xstInstalling C:\Perl\site\lib\auto\DBI\Driver_xst.hInstalling C:\Perl\site\lib\DBI\ProfileDumper\Apache.pmInstalling C:\Perl\site\lib\DBI\SQL\Nano.pmInstalling C:\Perl\site\lib\Win32\DBIODBC.pmInstalling C:\Perl\bin\dbiprofInstalling C:\Perl\bin\dbiprof.batInstalling C:\Perl\bin\dbiproxyInstalling C:\Perl\bin\dbiproxy.batSuccessfully installed DBI version 1.50 in ActivePerl 5.8.7.813.ppm> exit

C:\PERL\BIN>

Page 10: Perl and MySQL Using apache server with perl cgi Using MySQL Need to install dbi and dbd modules to your perl installation. There are some good examples

Install mysql connector from ppmppm> install http://theoryx5.uwinnipeg.ca/ppms/DBD-mysql.ppd====================Install 'DBD-mysql' version 3.0002 in ActivePerl 5.8.7.813.====================Downloaded 637299 bytes.Extracting 43/43: blibInstalling C:\Perl\site\lib\auto\DBD\mysql\mysql.bsInstalling C:\Perl\site\lib\auto\DBD\mysql\mysql.dllInstalling C:\Perl\site\lib\auto\DBD\mysql\mysql.expInstalling C:\Perl\site\lib\auto\DBD\mysql\mysql.libInstalling C:\Perl\html\site\lib\Mysql.htmlInstalling C:\Perl\html\site\lib\Bundle\DBD\mysql.htmlInstalling C:\Perl\html\site\lib\DBD\mysql.htmlInstalling C:\Perl\html\site\lib\DBD\mysql\INSTALL.htmlFiles found in blib\arch: installing files in blib\lib into architecture dependent library treeInstalling C:\Perl\site\lib\Mysql.pmInstalling C:\Perl\site\lib\Bundle\DBD\mysql.pmInstalling C:\Perl\site\lib\DBD\mysql.pmInstalling C:\Perl\site\lib\DBD\mysql\GetInfo.pmInstalling C:\Perl\site\lib\DBD\mysql\INSTALL.podInstalling C:\Perl\site\lib\Mysql\Statement.pmSuccessfully installed DBD-mysql version 3.0002 in ActivePerl 5.8.7.813.ppm>

Page 11: Perl and MySQL Using apache server with perl cgi Using MySQL Need to install dbi and dbd modules to your perl installation. There are some good examples

Listing dbi drivers perlscript (save in perl/bin)

use strict;

use warnings;

use DBI;

print map "$_\n",

DBI->available_drivers;

Page 12: Perl and MySQL Using apache server with perl cgi Using MySQL Need to install dbi and dbd modules to your perl installation. There are some good examples

Listing dbi drivers

C:\PERL\BIN>perl dbidrivers.plDBMExamplePFileProxySpongemysql

C:\PERL\BIN>

Page 13: Perl and MySQL Using apache server with perl cgi Using MySQL Need to install dbi and dbd modules to your perl installation. There are some good examples

Mysqltest.pl

• running perlscript on the commandline with db connection

• Need an accounts table in mysql containing fields: idnum, name and balance

Page 14: Perl and MySQL Using apache server with perl cgi Using MySQL Need to install dbi and dbd modules to your perl installation. There are some good examples

The script: Mysqltest.pl

use DBI;my $dsn = "DBI:mysql:database=test;host=localhost";my $dbh = DBI->connect($dsn, 'root', '',

{RaiseError => 1}) ||die $DBI::errstr;my $sth = $dbh->prepare(qq{ SELECT idnum,name, balance FROM

accounts });

$sth->execute || die "Error fetching data: $DBI::errstr";

while (my ($idnum,$name, $balance) = $sth->fetchrow_array) { print qq{ $name has balance: $balance \n};}

$dbh->disconnect;

Page 15: Perl and MySQL Using apache server with perl cgi Using MySQL Need to install dbi and dbd modules to your perl installation. There are some good examples

Running mysqltest.pl

C:\PERL\BIN>perl mysqltest.pl bob smith has balance: 1234567.99 sue jones has balance: 11223344.77 allison douglas has balance: 23456.64 wilson pickett has balance: 123.45 Venus Williams has balance: 98776587.11 R2D2 has balance: 12.88 Burt Lancaster has balance: 654832.11 Katie has balance: 389 Pop-Eye has balance: 34.16

C:\PERL\BIN>

Page 16: Perl and MySQL Using apache server with perl cgi Using MySQL Need to install dbi and dbd modules to your perl installation. There are some good examples

You’ll need a table in some mysql database

Page 17: Perl and MySQL Using apache server with perl cgi Using MySQL Need to install dbi and dbd modules to your perl installation. There are some good examples

Perlscript: part1#!C:\perl\bin\perl.exeprint "Content-type: text/html \n\n";# PERL MODULES WE WILL BE USINGuse DBI;use DBD::mysql

# HTTP HEADER

print "starting...";

$dbh= DBI->connect("DBI:mysql:test;mysql_use_result=1", "root", "");

print "connected...";# PREPARE THE QUERYmy $sth = $dbh->prepare("SELECT * FROM students");

Page 18: Perl and MySQL Using apache server with perl cgi Using MySQL Need to install dbi and dbd modules to your perl installation. There are some good examples

execute query…display results

# EXECUTE THE QUERY

print "executed query..."; if (!$sth) { die "Error:" . $dbh->errstr . "\n"; } if (!$sth->execute) { die "Error:" . $sth->errstr . "\n"; } my $names = $sth->{'NAME'}; my $numFields = $sth->{'NUM_OF_FIELDS'}; for (my $i = 0; $i < $numFields; $i++) { printf("%s%s", $i ? "," : "", $$names[$i]); } print "\n"; while (my $ref = $sth->fetchrow_arrayref) { for (my $i = 0; $i < $numFields; $i++) { printf("%s%s", $i ? "," : "", $$ref[$i]); } print "\n"; }

Page 19: Perl and MySQL Using apache server with perl cgi Using MySQL Need to install dbi and dbd modules to your perl installation. There are some good examples

http://localhost/cgi-bin/dbex6.cgi

Page 20: Perl and MySQL Using apache server with perl cgi Using MySQL Need to install dbi and dbd modules to your perl installation. There are some good examples

Inserting a record#!C:\perl\bin\perl.exeprint "Content-type: text/html \n\n";# PERL MODULES WE WILL BE USINGuse DBI;use DBD::mysql# HTTP HEADERprint "starting...";$dbh= DBI->connect("DBI:mysql:test;mysql_use_result=1", "root", "");print "connected...";# PREPARE THE QUERY$query = "INSERT INTO students ( name,id, grade) VALUES ( 'tomatoes', '11111','4')";my $sth = $dbh->prepare($query);# EXECUTE THE QUERY if (!$sth) { die "Error:" . $dbh->errstr . "\n"; } if (!$sth->execute) { die "Error:" . $sth->errstr . "\n"; } print "executed query...";

Page 21: Perl and MySQL Using apache server with perl cgi Using MySQL Need to install dbi and dbd modules to your perl installation. There are some good examples

Updating records#!C:\perl\bin\perl.exeprint "Content-type: text/html \n\n";# PERL MODULES WE WILL BE USINGuse DBI;use DBD::mysql# HTTP HEADERprint "starting...";$user = “user";$pw = "pw";print "defined vars...";# DATA SOURCE NAME$dsn = "DBI:mysql:test:localhost:3306";# PERL DBI CONNECT$dbh= DBI->connect("DBI:mysql:test;mysql_use_result=1", $user,$pw)|| die "Database connection not made: $DBI::errstr";print "connected...";$dbh->{RaiseError} = 1; my $sth = $dbh->prepare("UPDATE students SET id = '1212' WHERE name = 'john'"); print "defined sth...";$sth->execute(); print "executed..";$sth->finish; $dbh->disconnect; exit; __END__

Page 22: Perl and MySQL Using apache server with perl cgi Using MySQL Need to install dbi and dbd modules to your perl installation. There are some good examples

Updating records

Page 23: Perl and MySQL Using apache server with perl cgi Using MySQL Need to install dbi and dbd modules to your perl installation. There are some good examples

Updating multiple records

Page 24: Perl and MySQL Using apache server with perl cgi Using MySQL Need to install dbi and dbd modules to your perl installation. There are some good examples

Updating multiple records$dbh= DBI->connect("DBI:mysql:test;mysql_use_result=1", $user,

$pw)|| die "Database connection not made: $DBI::errstr";print "connected...";my @names = ("john", "Katie", "tomatoes"); $dbh->{RaiseError} = 1; my $sth = $dbh->prepare("UPDATE students SET grade= '99.9' WHERE name = ?"); print "defined sth..."; foreach $value (@names){

$sth->execute($value);}

print "executed..";$sth->finish; $dbh->disconnect;

Page 25: Perl and MySQL Using apache server with perl cgi Using MySQL Need to install dbi and dbd modules to your perl installation. There are some good examples

Using Bind Values

There may be a case when values to be entered into the table are not given in advance. In such a case, binding values are used. A question mark is used in place of actual value and then actual values are passed through the execute() API.

Page 26: Perl and MySQL Using apache server with perl cgi Using MySQL Need to install dbi and dbd modules to your perl installation. There are some good examples

Example: bind and execute using form parameters

my($name, $street, $city) =

(param("name"), param("street"),

param("city"));#params from a form

my $sth = $dbh->prepare("INSERT INTO TEST_TABLE (NAME, STREET, CITY) values (?,?,?)");

$sth->execute($name,$street,$city) or die $DBI::errstr;

$sth->finish();

$dbh->commit or die $DBI::errstr;

Page 27: Perl and MySQL Using apache server with perl cgi Using MySQL Need to install dbi and dbd modules to your perl installation. There are some good examples

bind and execute for an arbitrary query

$age = param(‘age’);#or read from a file or from input my $sth = $dbh->prepare("SELECT FIRST_NAME,

LAST_NAME FROM TEST_TABLE WHERE AGE > ?"); $sth->execute( $age ) or die $DBI::errstr; print "Number of rows found :" + $sth->rows; while (my @row = $sth->fetchrow_array()) { my ($first_name, $last_name ) = @row; print "First Name = $first_name, Last Name = $last_name\

n"; } $sth->finish();

Page 28: Perl and MySQL Using apache server with perl cgi Using MySQL Need to install dbi and dbd modules to your perl installation. There are some good examples

An html to perform sql

Page 29: Perl and MySQL Using apache server with perl cgi Using MySQL Need to install dbi and dbd modules to your perl installation. There are some good examples

Perl performs query