Chapter 14 Database Access through the Web. © 2006 Pearson Addison-Wesley. All rights reserved. 14-2 14.1 Relational Databases - A database is a collection.

Slides:



Advertisements
Similar presentations
PHP II Interacting with Database Data. The whole idea of a database-driven website is to enable the content of the site to reside in a database, and to.
Advertisements

Connecting to Databases. relational databases tables and relations accessed using SQL database -specific functionality –transaction processing commit.
Let’s try Oracle. Accessing Oracle The Oracle system, like the SQL Server system, is client / server. For SQL Server, –the client is the Query Analyser.
Copyright © 2011 Pearson Education, Inc. Publishing as Pearson Addison-Wesley Chapter 14 Web Database Programming Using PHP.
Chapter 12 © 2001 by Addison Wesley Longman, Inc. 1 Chapter 12 Sebesta: Programming the World Wide Web.
COS 381 Day Agenda  Capstone projects are DUE Wednesday, May 10 at 1PM  I will be covering ASP.NET from the handouts  There will be one lecture.
Objectives Connect to MySQL from PHP
1 C. Shahabi Application Programming for Relational Databases Cyrus Shahabi Computer Science Department University of Southern California
Concepts of Database Management Sixth Edition
CSC 2720 Building Web Applications Database and SQL.
2440: 141 Web Site Administration Web Server-Side Programming Professor: Enoch E. Damson.
DAT702.  Standard Query Language  Ability to access and manipulate databases ◦ Retrieve data ◦ Insert, delete, update records ◦ Create and set permissions.
Introduction To Databases IDIA 618 Fall 2014 Bridget M. Blodgett.
Advance Computer Programming Java Database Connectivity (JDBC) – In order to connect a Java application to a database, you need to use a JDBC driver. –
SJSU CS157B Dr. Lee1  2004 Jenny Mitchell Two Useful Tools You Can’t Live Without by Jenny Mitchell SJSU CS157B Section PHP and MySQL.
PHP1-1 PHP & SQL Xingquan (Hill) Zhu
Database System Concepts and Architecture Lecture # 3 22 June 2012 National University of Computer and Emerging Sciences.
Session 5: Working with MySQL iNET Academy Open Source Web Development.
Chapter 5 Introduction to SQL. Structured Query Language = the “programming language” for relational databases SQL is a nonprocedural language = the user.
1 Chapter 8 – Working with Databases spring into PHP 5 by Steven Holzner Slides were developed by Jack Davis College of Information Science and Technology.
Slide 8-1 CHAPTER 8 Using Databases with PHP Scripts: Using MySQL Database with PHP.
MySQL in PHP – Page 1 of 17CSCI 2910 – Client/Server-Side Programming CSCI 2910 Client/Server-Side Programming Topic: MySQL in PHP Reading: Williams &
Chapter 14 © 2005 by Addison Wesley Longman, Inc Relational Databases - A database is a collection of data organized to allow relatively easy access.
Chapter 13 © 2013 by Pearson Relational Databases - A database is a collection of data organized to allow relatively easy access for retrievals,
INTERNET APPLICATION DEVELOPMENT For More visit:
Advanced Database Management System Lab no. 11. SQL Commands (for MySQL) –Update –Replace –Delete.
Copyright © 2003 Pearson Education, Inc. Slide 8-1 The Web Wizard’s Guide to PHP by David Lash.
PHP Programming with MySQL Slide 8-1 CHAPTER 8 Working with Databases and MySQL.
Copyright © 2008 Pearson Education, Inc. Publishing as Pearson Addison-Wesley Chapter 13 Database Access Through the Web.
Chapter 13 © 2010 by Addison Wesley Longman, Inc Relational Databases - A database is a collection of data organized to allow relatively easy access.
1 PHP and MySQL. 2 Topics  Querying Data with PHP  User-Driven Querying  Writing Data with PHP and MySQL PHP and MySQL.
Announcements Read JDBC Project Step 5, due Monday.
M1G Introduction to Database Development 6. Building Applications.
Chapter 7 Working with Databases and MySQL PHP Programming with MySQL 2 nd Edition.
15/10/20151 PHP & MySQL 'Slide materials are based on W3Schools PHP tutorial, 'PHP website 'MySQL website.
Introduction to MySQL Lab no. 10 Advance Database Management System.
PHP MySQL Introduction. MySQL is the most popular open-source database system. What is MySQL? MySQL is a database. The data in MySQL is stored in database.
Chapter 6 PHP Interacts with Mysql Database. Introduction In PHP, there is no consolidated interface. Instead, a set of library functions are provided.
CSC 2720 Building Web Applications Database and SQL.
Programming for WWW (ICE 1338) Lecture #11 Lecture #11 July 30, 2004 In-Young Ko iko.AT. icu.ac.kr Information and Communications University (ICU) iko.AT.
NMED 3850 A Advanced Online Design January 12, 2010 V. Mahadevan.
1. Connecting database from PHP 2. Sending query 3. Fetching data 4. Persistent connections 5. Best practices.
Database Fred Durao What is a database? A database is any organized collection of data. Some examples of databases you may encounter in.
 2004 Prentice Hall, Inc. All rights reserved. 1 Segment – 6 Web Server & database.
Database Access with PHP and MySQL CS356 Examples from Web Database Applications, by Hugh E. Williams & David Lane, O'Reilly, 2002.
Chapter 10: The Data Tier We discuss back-end data storage for Web applications, relational data, and using the MySQL database server for back-end storage.
Web-Based Database Programming with PHP. Dept. of Computing Science, University of Aberdeen2 In this lecture you will learn PHP Basics PHP functions –To.
Open Source Server Side Scripting ECA 236 Open Source Server Side Scripting PHP & MySQL.
Copyright © 2010 Pearson Addison-Wesley. All rights reserved. Chapter 13: Database Access through the Web Programming the World Wide Web 2009 Fifth Edition.
DATABASE CONNECTIVITY TO MYSQL. Introduction =>A real life application needs to manipulate data stored in a Database. =>A database is a collection of.
Chapter 13 © 2010 by Addison Wesley Longman, Inc Relational Databases - A database is a collection of data organized to allow relatively easy access.
8 Chapter Eight Server-side Scripts. 8 Chapter Objectives Create dynamic Web pages that retrieve and display database data using Active Server Pages Process.
Chapter 8 Manipulating MySQL Databases with PHP PHP Programming with MySQL 2 nd Edition.
>> Introduction to MySQL. Introduction Structured Query Language (SQL) – Standard Database Language – Manage Data in a DBMS (Database Management System)
Database Connectivity and Server-Side Scripting Chapter 12.
CP476 Internet Computing Perl CGI and MySql 1 Relational Databases –A database is a collection of data organized to allow relatively easy access for retrievals,
ECMM6018 Enterprise Networking For Electronic Commerce Tutorial 6 CGI/Perl and databases.
Database: SQL, MySQL, LINQ and Java DB © by Pearson Education, Inc. All Rights Reserved.
Copyright © 2011 Pearson Education, Inc. Publishing as Pearson Addison-Wesley Chapter 14 Web Database Programming Using PHP.
SQL pepper. Why SQL File I/O is a great deal of code Optimal file organization and indexing is critical and a great deal of code and theory implementation.
Copyright © 2003 Pearson Education, Inc. Slide 8-1 The Web Wizard’s Guide to PHP by David Lash.
Chapter 13 © 2009 by Addison Wesley Longman, Inc Relational Databases - A database is a collection of data organized to allow relatively easy access.
ISC321 Database Systems I Chapter 2: Overview of Database Languages and Architectures Fall 2015 Dr. Abdullah Almutairi.
13.1 Relational Databases - A database is a collection of data organized to allow relatively easy access for retrievals, additions, and deletions - A relational.
Chapter 5 Introduction to SQL.
JDBC.
ISC440: Web Programming 2 Server-side Scripting PHP 3
Chapter 8 Working with Databases and MySQL
Database Access with PHP and MySQL
Presentation transcript:

Chapter 14 Database Access through the Web

© 2006 Pearson Addison-Wesley. All rights reserved Relational Databases - A database is a collection of data organized to allow relatively easy access for retrievals, additions, and deletions - A relational database is a collection of tables of data, each of which has one special column that stores the primary keys of the table - Rows are sometimes called entities - Designing a relational database for used Corvettes that are for sale - Could just put all data in a single table, whose key would be a simple sequence number - The table could have information about various equipment the cars could have - Better to put the equipment in a different table and use a cross-reference table to relate cars to equipment - Use a separate table for state names, with only references in the main table

© 2006 Pearson Addison-Wesley. All rights reserved Relational Databases (continued) - Logical model Corvettes States Corvettes_ Equipment Equipment - Implementation Vette_idBody_styleMiles YearState 1coupe hatchback convertible hatchback hatchback hardtop coupe convertible hardtop hatchback Figure 13.2 The Corvettes table

© 2006 Pearson Addison-Wesley. All rights reserved Relational Databases (continued) State_idState 1Alabama 2Alaska 3Arizona 4Arkansas 5California 6Colorado 7Connecticut 8Delaware 9Florida 10Georgia Figure 13.3 The States table Equip_idEquipment 1Automatic 24-speed 35-speed 46-speed 5CD 6leather Figure 13.4 The Equipment table

© 2006 Pearson Addison-Wesley. All rights reserved Relational Databases (continued) Vette_idEquip Figure 13.5 The Corvettes-Equipment cross-reference table

© 2006 Pearson Addison-Wesley. All rights reserved Intro to SQL - A standard language to create, query, and modify databases - Supported by all major database vendors - More like structured English than a programming language - We cover only six basic commands: CREATE TABLE, SELECT, INSERT, UPDATE, DELETE, and DROP - SQL reserved words are case insensitive - The CREATE TABLE command: CREATE TABLE table_name ( column_name 1 data_type constraints, … column_name n data_type constraints ) - There are many different data types ( INTEGER, FLOAT, CHAR( length ), …)

© 2006 Pearson Addison-Wesley. All rights reserved Intro to SQL (continued) - There are several constraints possible e.g., NOT NULL, PRIMARY KEY CREATE TABLE States ( State_id INTEGER PRIMARY KEY NOT NULL, State CHAR(20)) - The SELECT Command - Used to specify queries - Three clauses: SELECT, FROM, and WHERE - General form: SELECT column names FROM table names WHERE condition SELECT Body_style FROM Corvettes WHERE Year > 1994

© 2006 Pearson Addison-Wesley. All rights reserved Intro to SQL (continued) - The INSERT Command INSERT INTO table_name ( col_name 1, … col_name n ) VALUES ( value 1, …, value n ) - The correspondence between column names and values is positional INSERT INTO Corvettes(Vette_id, Body_style, Miles, Year, State) VALUES (37, 'convertible', 25.5, 1986, 17) - The UPDATE Command - To change one or more values of a row in a table UPDATE table_name SET col_name 1 = value 1, … col_name n = value n WHERE col_name = value - The WHERE clause is the primary key of the row to be updated

© 2006 Pearson Addison-Wesley. All rights reserved Intro to SQL (continued) - Example: UPDATE Corvettes SET Year = 1996 WHERE Vette_id = 17 - The DELETE Command - Example: DELETE FROM Corvettes WHERE Vette_id = 27 - The WHERE clause could specify more than one row of the table - The DROP Command - To delete whole databases or complete tables DROP ( TABLE | DATABASE ) [ IF EXISTS ] name DROP TABLE IF EXISTS States

© 2006 Pearson Addison-Wesley. All rights reserved Intro to SQL (continued) - Joins - If you want all cars that have CD players, you need information from two tables, Corvettes and Equipment - SELECT can build a temporary table with info from two tables, from which the desired results can be gotten - this is called a join of the two tables - A SELECT that does a join operation specifies two tables in its FROM clause and also has a compound WHERE clause - For our example, we must have three WHERE conditions 1. Vette_id s from Corvettes and Corvettes_Equipment must match 2. Equip from Corvettes_Equipment must match the Equip_id from Equipment 3. The Equip from Equipment must be CD

© 2006 Pearson Addison-Wesley. All rights reserved Intro to SQL (continued) SELECT Corvettes.Vette_id, Corvettes.Body_style, Corvettes.Miles, Corvettes.Year, Corvettes.State, Equipment.Equip FROM Corvettes, Equipment, Corvette_Equipment WHERE Corvettes.Vette_id = Corvettes_Equipment.Vette_id AND Corvettes_Equipment.Equip = Equipment.Equip_id AND Equipment.Equip = 'CD' This query produces VETTE_ID BODY_STYLE MILES YEAR STATE EQUIP. 1 coupe CD 2 hatchback CD 8 convertible CD 9 hardtop CD 10 hatchback CD

© 2006 Pearson Addison-Wesley. All rights reserved Architectures for Database Access - Client-Server Architectures - Client tasks: - Provide a way for users to submit queries - Run applications that use the results of queries - Display results of queries - Server tasks: - Implement a data manipulation language, which can directly access and update the database - A two-tier system has clients that are connected directly to the server - Problems with a two-tier system: - Because the relative power of clients has grown considerably, we could shift processing to the client, but then keeping all clients current with application updates is difficult

© 2006 Pearson Addison-Wesley. All rights reserved Architectures for Database Access (continued) - A solution to the problems of two-tier systems is to add a component in the middle - create a three-tier system - For Web-based database access, the middle tier can run applications (client just gets results) Client Middle tier Server Browser Web Server Database & Apps System - Database Access with Embedded SQL - SQL commands are embedded in programs written in a host programming language, whose compiler is extended to accept some form of SQL commands - Advantage: - One package has computational support of the programming language, as well as database access with SQL

© 2006 Pearson Addison-Wesley. All rights reserved Architectures for Database Access (continued) - Disadvantage (of embedded SQL): - Portability among database systems - Microsoft Access Architecture - A tool to access any common database structure - Use either the Jet database engine, or go through the Open Database Connectivity (ODBC) standard - ODBC is an API for a set of objects and methods that are an interface to different databases - Database vendors provide ODBC drivers for their products – the drivers implement the ODBC objects and methods - An application can include SQL statements that work for any database for which a driver is available

© 2006 Pearson Addison-Wesley. All rights reserved Architectures for Database Access (continued) - The Perl DBI/DBD Architecture - Database Interface (DBI) provides methods & attributes for generic SQL commands - Database Driver (DBD) is an interface to a specific database system (MySQL, Oracle, etc.) - Convenient for Web access to databases, because the Perl program can be run as CGI on the Web server system - PHP & Database Access - An API for each specific database system - Also convenient for Web access to databases, because PHP is run on the Web server

© 2006 Pearson Addison-Wesley. All rights reserved Architectures for Database Access (continued) - The Java JDBC Architecture - Related to both embedded languages and to ODBC - JDBC is a standard protocol that can be implemented as a driver for any database system - JDBC allows SQL to be embedded in Java applications, applets, and servlets - JDBC has the advantage of portability over embedded SQL - A JDBC application will work with any database system for which there is a JDBC driver

© 2006 Pearson Addison-Wesley. All rights reserved The MySQL Database System - A free, efficient, widely used SQL implementation - Available from - Logging on to MySQL (starting it): mysql [ -h host] [ -u username] [database name] [ -p ] - Host is the name of the MySQL server - Default is the user’s machine - Username is that of the database - Default is the name used to log into the system - The given database name becomes the “focus” of MySQL - If you want to access an existing database, but it was not named in the mysql command, you must choose it for focus use cars; - Response is: Database changed

© 2006 Pearson Addison-Wesley. All rights reserved The MySQL Database System (continued) - If the focus has not been set and MySQL gets an SQL command, you get: ERROR 1046: No Database Selected - To create a new database, CREATE DATABASE cars; - Response: Query ok, 1 row affected (0.05 sec) - Example: CREATE TABLE Equipment (Equip_id INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY, Equip INT UNSIGNED ); - To see the tables of a database: SHOW TABLES; - To see the description of a table (columns): DESCRIBE Corvettes;

© 2006 Pearson Addison-Wesley. All rights reserved Database Access with PHP/MySQL - When values from a DB are to be put in XHTML, you must worry about XHTML special characters - To get rid of the XHTML special characters, use the PHP function, htmlspecialchars($str) - Replaces the special characters in the string with their corresponding XHTML entities - Another problem with PHP and XHTML forms is the string special characters ( ″, ", \, and NULL ), which could come from $_GET and $_POST - To fix these, magic_quotes_gpc in the PHP.ini file is set to ON by default - This backslashes these special characters $query = "SELECT * FROM Names WHERE Name = $name"; - If this wasn’t done and the value of $name is O'Shanter, it would prematurely terminate the query string - But with magic_quotes_gpc on, it will be converted to O\'Shanter - Unfortunately, this can create new problems

© 2006 Pearson Addison-Wesley. All rights reserved Database Access with PHP/MySQL (continued) - For example, if a SELECT clause has a single- quoted part, like 'California', the single quotes will be implicitly backslashed, making the query illegal for MySQL - So, magic_quotes_gpc must be turned off, or else the extra backslashes can be removed with stripslashes - To connect PHP to a database, use mysql_pconnect, which can have three parameters: 1. host (default is localhost) 2. Username (default is the username of the PHP script) 3. Password (default is blank, which works if the database does not require a password) $db = mysql_pconnect(); - Usually checked for failure - Sever the connection to the database with mysql_close

© 2006 Pearson Addison-Wesley. All rights reserved Database Access with PHP/MySQL (continued) - To focus MySQL, mysql_select_db("cars"); - Requesting MySQL Operations - Call mysql_query with a string parameter, which is an SQL command $query = "SELECT * from States"; $result = mysql_query($query); - Dealing with the result: 1. Get the number of rows in the result $num_rows = mysql_num_rows($result); 2. Get the rows with mysql_fetch_array for ($row_num = 0; $row_num < $num_rows; $row_num++) { $row = mysql_fetch_array($result); print " Result row number". ($row_num + 1). " State_id: "; print htmlspecialchars($row["State_id"]); print "State: "; etc.

© 2006 Pearson Addison-Wesley. All rights reserved Database Access with PHP/MySQL (continued) - We have had it easy – the column titles were known - If they are not known, we must get them - The result rows are in PHP arrays, whose elements actually are double sets of elements - Each pair has the value, but one has a numeric key and one has a string key - For example, if the result has the field values (1, Alabama), the array has: ((0, 1), (State_id, 1), (1, Alabama), (State, Alabama)) - If the row is indexed with numbers, the element values are returned - The following displays all field values from $row $values = array_values($row); for ($index = 0; $index < $num_fields / 2; $index++) print "$values[2 * $index + 1] ";

© 2006 Pearson Addison-Wesley. All rights reserved Database Access with PHP/MySQL (continued) - To display all column names: $keys = array_keys($row); for ($index = 0; $index < $num_fileds; $index++) print "$keys[2 * $index + 1] ";  SHOW carsdata.html  SHOW access_cars.php

© 2006 Pearson Addison-Wesley. All rights reserved Database Access with PHP/MySQL (continued) - The form display document and the PHP processing document can be combined - After simply inserting the XHTML from the display document into the PHP document, several modifications are required: 1. Change the value of the action attribute of the form to the name of the combined document file 2. Create a hidden input element that sets its value when the document is first displayed. This provides a way for the document to determine which it is doing, displaying the form or processing the form data <input type = "hidden" name = "stage" value = "1" /> The PHP code to test this has the form: $stage = $_POST[ " stage " ]; if (!IsSet($stage))) { … } The then clause includes the form processing; the else clause includes the form display  SHOW access_cars2.php