c20.0046: database management systems lecture #21

23
M.P. Johnson, DBMS, Stern/NYU, Sprin g 2005 1 C20.0046: Database Management Systems Lecture #21 M.P. Johnson Stern School of Business, NYU Spring, 2005

Upload: coy

Post on 15-Jan-2016

27 views

Category:

Documents


0 download

DESCRIPTION

C20.0046: Database Management Systems Lecture #21. M.P. Johnson Stern School of Business, NYU Spring, 2005. Homework. Project part 4 due today Topic: populating your tables with data Using MySQL’s bulk loader Start early! Turn in on time Project part 5 - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: C20.0046: Database Management Systems Lecture #21

M.P. Johnson, DBMS, Stern/NYU, Spring 2005

1

C20.0046: Database Management SystemsLecture #21

M.P. Johnson

Stern School of Business, NYU

Spring, 2005

Page 2: C20.0046: Database Management Systems Lecture #21

M.P. Johnson, DBMS, Stern/NYU, Spring 2005

2

Homework Project part 4 due today

Topic: populating your tables with data Using MySQL’s bulk loader Start early! Turn in on time

Project part 5 Topic: web interface + any remaining loose ends Posted soon… Due: end of semester

Page 3: C20.0046: Database Management Systems Lecture #21

M.P. Johnson, DBMS, Stern/NYU, Spring 2005

3

Agenda: Programming for SQL Have now been exposed to:

Embedded SQL: Pro*C Java JDBC Stored Procedures: PL/SQL

All used; good to know about

Most important for this course: DB-conn from web scripting languages DBI/DBDs in Perl, PHP

Page 4: C20.0046: Database Management Systems Lecture #21

M.P. Johnson, DBMS, Stern/NYU, Spring 2005

4

Goals: after this week After Tuesday: be able to post a hello-web

Perl script in your sales account

After Today:1. be able to post a hello-web PHP script in your

sales account

2. Be able to modify/extend non-trivial Perl/PHP scripts to work with your DB

Take input from user Execute SQL query Display formatted results

Page 5: C20.0046: Database Management Systems Lecture #21

M.P. Johnson, DBMS, Stern/NYU, Spring 2005

5

Review: CGI/Perl

ProgramClient

Server

HTTP Request

Data for program

Generated HTML

HTML

Image from http://www.scit.wlv.ac.uk/~jphb/cp3024/

Page 6: C20.0046: Database Management Systems Lecture #21

M.P. Johnson, DBMS, Stern/NYU, Spring 2005

6

New topic: HTML forms Interactive parts of HTML: forms

Intuition for name: paper form Fill in textboxes, check boxes or not, etc. Turn it in (press button)

HTML form contains arb. # of INPUTs Submits to somewhere (ACTION) By GET or POST

Page 7: C20.0046: Database Management Systems Lecture #21

M.P. Johnson, DBMS, Stern/NYU, Spring 2005

7

Form example

On clicking Send, we go to the same page, but with “name=99&sumbit=OK”

http://pages.stern.nyu.edu/~mjohnson/dbms/perl/input.cgi

<form method="get" action="">Enter a number:<input type="Text“ name="number"><br><input type="Submit" name="submit" value="OK"></form>

<form method="get" action="">Enter a number:<input type="Text“ name="number"><br><input type="Submit" name="submit" value="OK"></form>

Page 8: C20.0046: Database Management Systems Lecture #21

M.P. Johnson, DBMS, Stern/NYU, Spring 2005

8

Perl and forms Obtain param number:

Goal: display text and button; On submit, tell user what was entered

http://pages.stern.nyu.edu/~mjohnson/dbms/perl/input.cgi http://pages.stern.nyu.edu/~mjohnson/dbms/perl/inputcgi.txt

Improve: also print, say, triple the input…

my $cgi = CGI->new();$param = $cgi->param('number');

my $cgi = CGI->new();$param = $cgi->param('number');

Page 9: C20.0046: Database Management Systems Lecture #21

M.P. Johnson, DBMS, Stern/NYU, Spring 2005

9

Perl error-handling Many Perl scripts have lines of the form

some-statement OR die(“something happened”);

What this means: die exits with error message Perl supports both || and OR as or operator Perl supports boolean “short-circuiting”

Boolean eval stops as fast as possible Ftns often return 0/null/false for errors

if some-statement fails then we die

Page 10: C20.0046: Database Management Systems Lecture #21

M.P. Johnson, DBMS, Stern/NYU, Spring 2005

10

Perl and databases DB connectivity is done through DBI

Database Interface Analogous to Java’s JDBC The steps correspond roughly 1-1

Think of DBI as a Java class with static methods

Use these to obtain a connection, prepare and execute queries, etc.

Page 11: C20.0046: Database Management Systems Lecture #21

M.P. Johnson, DBMS, Stern/NYU, Spring 2005

11

Perl DBI1. Open a connection:

2. Prepare and execute query:

my $dbh = DBI-> connect("dbi:mysql:database=mydb;mysql2.stern.nyu.edu;port=3306", user, pass);

my $dbh = DBI-> connect("dbi:mysql:database=mydb;mysql2.stern.nyu.edu;port=3306", user, pass);

my $sth = $dbh->prepare($query);$sth->execute;

my $sth = $dbh->prepare($query);$sth->execute;

Page 12: C20.0046: Database Management Systems Lecture #21

M.P. Johnson, DBMS, Stern/NYU, Spring 2005

12

Perl DBI3. Extract next row of data from statement

results, if available:

What this means: row has two fields, whose values are put in $a and $b, in order

Other options, but this should suffice In general, want to scroll through results:

Braces { } are required!

my ($a, $b) = $sth->fetchrow_array()my ($a, $b) = $sth->fetchrow_array()

while (my ($a, $b) = $sth->fetchrow_array()) {# print out $a and $b

}

while (my ($a, $b) = $sth->fetchrow_array()) {# print out $a and $b

}

Page 13: C20.0046: Database Management Systems Lecture #21

M.P. Johnson, DBMS, Stern/NYU, Spring 2005

13

Limit: Perl webpages that do something Semi-interesting Perl script:

http://pages.stern.nyu.edu/~mjohnson/dbms/perl/lookupcgi.txt http://pages.stern.nyu.edu/~mjohnson/dbms/perl/lookup.cgi

Non-trivial but not huge: ~40 lines Works with two-column (a,b) table

Takes input from user Returns rows whose a field contains value If no/empty input, returns all rows

Bad idea in general!

Page 14: C20.0046: Database Management Systems Lecture #21

M.P. Johnson, DBMS, Stern/NYU, Spring 2005

14

lookup.cgi Two possible situations for running script:

1. Page opened for the first time2. User entered parameter and pressed button

Structure of file:1. Print input box and button for next search

On button click, parameter is sent to this page’s url

2. (Try to) read input parameter3. Open MySQL connection4. Run query5. Print results in a table6. Disconnect from MySQL

Page 15: C20.0046: Database Management Systems Lecture #21

M.P. Johnson, DBMS, Stern/NYU, Spring 2005

15

Higher-level structure As one page:

If we have params, display data based on them Otherwise, prompt user for params, call self

Could be: Page 1: prompt for params, call page 2 Page 2: display data based on params

In e.g.: always display data for convenience

Page 16: C20.0046: Database Management Systems Lecture #21

M.P. Johnson, DBMS, Stern/NYU, Spring 2005

16

Tutorials on Perl Some material drawn from the following good tutorials: http://perl.com

CGI backend programming using perl: http://www.scit.wlv.ac.uk/~jphb/sst/perl/

Perl Basics: http://www.cs.wcupa.edu/~rkline/csc417/perl-basics-1.html

CGI Basics: http://www.cs.wcupa.edu/~rkline/csc417/cgi-basics-1.html

MySQL/Perl/CGI example: http://www.scit.wlv.ac.uk/~jphb/sst/perl/ex3d.html

Page 17: C20.0046: Database Management Systems Lecture #21

M.P. Johnson, DBMS, Stern/NYU, Spring 2005

17

That’s all, folks! Q: Is this enough to get a job coding Perl? A: Probably not!

But:

Don’t like Perl/CGI? Don’t want to run start a new process for every

user/pageview/roundtrip of your site? Next we’ll do PHP…

a couple modified copies of lookup.cgi and/or cia.cgi

+some HTML glue

fairly interesting site

a couple modified copies of lookup.cgi and/or cia.cgi

+some HTML glue

fairly interesting site

Page 18: C20.0046: Database Management Systems Lecture #21

M.P. Johnson, DBMS, Stern/NYU, Spring 2005

18

Dynamic webpages Original prob: need webpages to respond to

user inputs Soln 2:

create a an html file embedded with special non-html code

upon url request, execute embedded code to generate more html/fill in the file

Send back the modified html page to user An incomplete html page exists on server Examples: PHP, JSPs, ASPs, etc.

Page 19: C20.0046: Database Management Systems Lecture #21

M.P. Johnson, DBMS, Stern/NYU, Spring 2005

19

Review: dynamic webpages First option: for each request: run program,

produce whole page, send back CGI & some host language, Java Servlets, etc.

Second option: create html page with missing parts; for each response, fill in the wholes and send back Embedded scripting PHP and others PHP = Personal Home Page or

= PHP Hypertext Processor

Page 20: C20.0046: Database Management Systems Lecture #21

M.P. Johnson, DBMS, Stern/NYU, Spring 2005

20

hello.php http://pages.stern.nyu.edu/~mjohnson/dbms/php/hello.php

Q: What the difference between <br> and \n?

<html><head><title>Hello from PHP</title></head><body>Here is the PHP part:<BR><BR><?php print "Hello, World!<br>\n“; ?><br>That's it!</body></html>

<html><head><title>Hello from PHP</title></head><body>Here is the PHP part:<BR><BR><?php print "Hello, World!<br>\n“; ?><br>That's it!</body></html>

Page 21: C20.0046: Database Management Systems Lecture #21

M.P. Johnson, DBMS, Stern/NYU, Spring 2005

21

hello2.php Script errors, w/ and w/o display_errors on:

http://pages.stern.nyu.edu/~mjohnson/dbms/perl/hello2.php http://pages.stern.nyu.edu/~mjohnson/dbms/php/hello2.php

Local dir must contain .htaccess:

Automatically load GET/POST params as vars http://pages.stern.nyu.edu/~mjohnson/dbms/php/.htaccess

php_flag display_errors on php_flag register_globals on

php_flag display_errors on php_flag register_globals on

Page 22: C20.0046: Database Management Systems Lecture #21

M.P. Johnson, DBMS, Stern/NYU, Spring 2005

22

For next time…

1. Run/read these Perl scripts:

http://pages.stern.nyu.edu/~mjohnson/dbms/perl/input.cgi http://pages.stern.nyu.edu/~mjohnson/dbms/perl/inputcgi.txt

http://pages.stern.nyu.edu/~mjohnson/dbms/perl/update.cgi http://pages.stern.nyu.edu/~mjohnson/dbms/perl/updatecgi.txt

http://pages.stern.nyu.edu/~mjohnson/dbms/perl/cia.cgi http://pages.stern.nyu.edu/~mjohnson/dbms/perl/cia.pl

Page 23: C20.0046: Database Management Systems Lecture #21

M.P. Johnson, DBMS, Stern/NYU, Spring 2005

23

For next time…

2. Run/read these PHP scripts:

http://pages.stern.nyu.edu/~mjohnson/dbms/php/lookup.php http://pages.stern.nyu.edu/~mjohnson/dbms/php/lookupphp.txt

http://pages.stern.nyu.edu/~mjohnson/dbms/php/update.php http://pages.stern.nyu.edu/~mjohnson/dbms/php/updatephp.txt

http://pages.stern.nyu.edu/~mjohnson/dbms/php/cia.php http://pages.stern.nyu.edu/~mjohnson/dbms/php/ciaphp.txt

Various others in dbms/perl and dbms/php…