1. Trang chủ
  2. » Công Nghệ Thông Tin

Tài liệu PHP and MySQL by Example- P13 doc

50 465 0
Tài liệu đã được kiểm tra trùng lặp

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Tiêu đề Tài liệu PHP and MySQL by Example- P13 doc
Trường học University of the People
Chuyên ngành Computer Science
Thể loại Document
Thành phố Los Angeles
Định dạng
Số trang 50
Dung lượng 1,22 MB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

The database increments its internal counter, guaranteeing that each record will be given a unique “key.” To set a field as a primay key, use the attribute PRIMARY KEY field_name and to

Trang 1

Table 14.3 Most Common SQL Data Types

Trang 2

Format

CREATE TABLE table_name ( column_name1 data_type, column_name2 data_type,

column_name3 data_type < no comma on the last entry )

Example 14.26

1 mysql> CREATE DATABASE pets;

Query OK, 1 row affected (0.24 sec)

2 mysql> USE pets;

3 mysql> CREATE TABLE dog

Query OK, 0 rows affected (0.16 sec)

4 mysql> describe dog;

Trang 3

+ -+ -+ -+ -+ -+ -+

| Field | Type | Null | Key | Default | Extra |

+ -+ -+ -+ -+ -+ -+

| name | varchar(20) | YES | | NULL | |

| owner | varchar(20) | YES | | NULL | |

| breed | varchar(20) | YES | | NULL | |

| sex | char(1) | YES | | NULL | |

| birth | date | YES | | NULL | |

| death | date | YES | | NULL | |

mysql> INSERT INTO dog(name,owner,breed, sex, birth, death)

-> VALUES('Fido','Mr Jones', 'Mutt', 'M', '2004-11-12',

Primary Keys

Each table typically has a primary key Primary keys are used to uniquely identify a record in the database They must

be unique, never change, occur only once per table, and are normally numeric types

You can choose to manually generate this unique number for each record or let the database do it for you If you let the database generate the primary key, it will generate a unique number, given a starting value (e.g., 1) and then for each new record increment that number by one Even if a record is deleted, that number is never recycled The database increments its internal counter, guaranteeing that each record will be given a unique “key.”

To set a field as a primay key, use the attribute PRIMARY KEY (field_name) and to tell the database to

automatically create the unique number, use the AUTO_INCREMENT attribute following the field definition The primary key cannot be null

The following two examples describe a table called “categories” where the primary key is called “CategoryID” It will automatically be incremented each time a new category is added to the table

Trang 4

The “CategoryID” is the primary key, an integer of up to 11 digits, which will be incremented by 1, initially

set to NULL (no value) The first time a record is inserted into the database, the value will be 1

The primary key is called “CategoryID” It is used to uniquely identify the different categories in this table

from the “northwind” database When a new category is added to the table, the “CategoryID” will be

automatically incremented by 1

Foreign Keys

If a primary key is referenced in another table, it is called a foreign key Foreign keys are used to create relation

between tables In the following example, two tables are described, which both reference the “CategoryID” key,

although it is primary in one and foreign in the other

Trang 5

4 rows in set (0.00 sec)

mysql> DESCRIBE products;

Trang 6

Explanation

14.3.5 Relations

A major advantage of the relational database systems is the ability to create relations between tables Simply put, a relation is a connection between a field of one table and a field of another This relation allows you to look up related records in the database

The operation of matching rows from one table to another using one or more column values is called a join There are several types of join statements, such as full joins, cross joins, left joins, and so on, but let’s start with a simple joining

of two tables, called an inner join

Tables can be related to each other with keys As we discussed earlier, a primary key is a column with a unique value for each row A matching key in a second table is called a foreign key With these keys, you can bind data together across tables without repeating all of the data in every table where a certain condition is met

Consider the the previous Example 14.30, in which two tables from the “northwind” database are described One table

is called “categories” and the other called “products” “CategoryId” is a primary key field in the “categories” table, and

it is a foreign key in the “products” table The “CategoryId” key is used to create a relationship between the two tables

Two Tables with a Common Key

As discussed previously, both the “categories” table and the “products” table have a “CategoryID” key with the same values, making it possible to create a relation between the two tables

Let’s create a relation in which all the product names are listed if they are in the “Seafood” category Because every product in the “products” table falls into one of the eight categories in the “categories” table, the two tables can be bound by their common “CategoryID”

Example 14.31

mysql> SELECT CategoryID, CategoryName FROM categories;

+ -+ -+

| categoryID | categoryName | + -+ -+

| 1 | Beverages |

| 2 | Condiments |

| 3 | Confections |

| 4 | Dairy Products | | 5 | Grains/Cereals | | 6 | Meat/Poultry | | 7 | Produce |

| 8 | Seafood |

+ -+ -+

8 rows in set (0.00 sec) mysql> SELECT CategoryID, ProductName FROM products; (Partial Output) + -+ -+

| CategoryID | ProductName |

+ -+ -+

| 1 | Chai |

| 1 | Chang |

| 2 | Aniseed Syrup |

Trang 7

| 2 | Chef Anton's Cajun Seasoning |

| 2 | Chef Anton's Gumbo Mix |

| 2 | Grandma's Boysenberry Spread |

| 7 | Uncle Bob's Organic Dried Pears | | 2 | Northwoods Cranberry Sauce |

| 6 | Mishi Kobe Niku |

| 8 | Ikura |

| 4 | Queso Cabrales |

| 4 | Queso Manchego La Pastora |

| 8 | Konbu |

| 7 | Tofu |

| 2 | Genen Shouyu |

Explanation This example displays columns from both the “categories” table and the “products” table In the “categories” table the “CategoryID” is the primary field and uniquely identifies all other fields in the table In the “products” table, the “CategoryID” is a foreign key and is repeated many times for all the products Using a Fully Qualified Name and a Dot to Join the Tables When querying more than one table, a dot is used to fully qualify the columns by their table name to avoid potential ambiguity if two tables have a field with the same name, as shown in Example 14.32 Example 14.32 mysql> SELECT CategoryName, ProductName FROM categories, products -> WHERE products.CategoryID = 8 AND categories.CategoryID = 8; + -+ -+

| CategoryName | ProductName |

+ -+ -+

| Seafood | Ikura |

| Seafood | Konbu |

| Seafood | Carnarvon Tigers |

| Seafood | Nord-Ost Matjeshering |

| Seafood | Inlagd Sill |

| Seafood | Gravad lax |

| Seafood | Boston Crab Meat |

| Seafood | Jack's New England Clam Chowder | | Seafood | Rogede sild |

| Seafood | Spegesild |

| Seafood | Escargots de Bourgogne |

| Seafood | Röd Kaviar |

+ -+ -+

12 rows in set (0.00 sec)

Explanation

In the SELECT, two tables (separated by commas) will be joined by the “CategoryID” field Because the

field name is the same in both tables, the table name is prepended to the field name with a dot, as

products.CategoryId and categories.CategoryId In the WHERE clause, the two tables are

connected if the both tables have a “CategoryID” equal to 8

Aliases

To make things a little easier by typing less with complicated queries, SQL provides an aliasing mechanism that allows you to use symbolic names for columns and tables The alias is defined with the AS keyword and the alias consists of a

Trang 8

single character or an abbreviated string When the alias is used in the WHERE clause to represent a table name, it is appended with a dot and the name of the field being selected from that table

Format

(Column Alias)

SELECT column_name AS column_alias_name FROM table_name

(Table Alias)

SELECT column_name FROM table_name AS table_alias_name

Example 14.33

mysql> SELECT CategoryName as Foods FROM categories;

+ -+

| Foods |

+ -+

| Beverages |

| Condiments |

| Confections |

| Dairy Products | | Grains/Cereals | | Meat/Poultry | | Produce |

| Seafood |

+ -+

8 rows in set (0.00 sec) Explanation The column name from table “categories” was named “CategoryName” An alias called “Foods” is created by using the AS keyword after “CategoryName” Now when the SELECT returns a result-set, the output will show “Foods” as the name of the column Example 14.34 mysql> SELECT ProductName FROM products AS p, categories AS c WHERE -> p.CategoryID = c.CategoryID AND c.CategoryName="SeaFood"; + -+

| ProductName |

+ -+

| Ikura |

| Konbu |

| Carnarvon Tigers |

| Nord-Ost Matjeshering |

| Inlagd Sill |

| Gravad lax |

| Boston Crab Meat |

| Jack's New England Clam Chowder | | Rogede sild |

| Spegesild |

| Escargots de Bourgogne |

| Röd Kaviar |

+ -+

12 rows in set (0.00 sec)

Trang 9

Explanation

This example might look a little tricky at first The table named “products” is given an alias called “p” and

the table name “categories” is given the alias “c” These aliases are short names, making it easier to type

the query when more than one table is involved; for example, instead of typing

products.CategoryID, we can type p.CategoryID, and categories.CategoryName can be

1 mysql> ALTER TABLE dog ADD pet_id int(11);

Query OK, 0 rows affected (0.13 sec)

Records: 0 Duplicates: 0 Warnings: 0

2 mysql> ALTER TABLE dog MODIFY column pet_id int(11)

> auto_increment primary key;

Query OK, 1 row affected (0.11 sec)

Records: 1 Duplicates: 0 Warnings: 0

3 mysql> describe dog;

+ -+ -+ -+ -+ -+ -+ | Field | Type | Null | Key | Default | Extra

|

+ -+ -+ -+ -+ -+ -+ | name | varchar(20) | YES | | NULL |

7 rows in set (0.00 sec)

mysql> select * from dog;

Trang 10

To drop a table is relatively simple Just use the drop command and the name of the table:

mysql> drop table dog; Query OK, 20 rows affected (0.11 sec)

14.3.8 Dropping a Database

To drop a database, use the drop database command:

mysql> drop database pets; Query OK, 1 row affected (0.45 sec)

14.4 SQL Functions

The following functions are used to alter or format the output of a SQL query Functions are provided for strings, numbers, dates, server and information, and so on They return a result-set Functions are vendor specific, meaning functions supported by MySQL might not be supported by Microsoft SQL Server See the MySQL documenation for a list of all functions supported

When using SELECT with a function, the function, as it was called, is displayed as the name of the column in the result-set as shown in Example 14.36

1 row in set (0.01 sec)

2 mysql> SELECT avg(UnitPrice) as 'Average Price'

FROM order_details;

Trang 11

No GROUP BY clause is required if the aggregate function is the only value retrieved by the SELECT statement The functions and their syntax are listed in Table 14.4

Table 14.4 Aggregate Functions

1 row in set (0.00 sec)

mysql> SELECT count(*) as 'Number of Rows' FROM products;

+ -+

| Number of Rows |

+ -+

Trang 12

| 81 |

+ -+

1 row in set (0.00 sec) Explanation COUNT() Example 14.38 1 mysql> SELECT avg(UnitPrice) FROM order_details; + -+

| avg(UnitPrice) | + -+

| 26.21851972 | + -+

1 row in set (0.01 sec) 2 mysql> SELECT FORMAT(avg(UnitPrice),2) as 'Average Price' FROM order_details; + -+

| Average Price | + -+

| 26.22 |

+ -+

1 row in set (0.00 sec) Explanation AVG() FORMAT AVG() Using GROUP BY The GROUP BY clause can be used with a SELECT to collect all the data across multiple records and group the results by one or more columns This is useful with the aggregate functions such as SUM, COUNT, MIN, or MAX See the following two examples Example 14.39 mysql> select CategoryID, SUM(UnitsInStock) as 'Total Units in Stock' -> FROM products -> GROUP BY CategoryID; + -+ -+

| CategoryID | Total Units in Stock | + -+ -+

| NULL| 0 |

| 1 | 559 |

| 2 | 507 |

Trang 13

| 3 | 386 |

| 4 | 393 |

| 5 | 308 |

| 6 | 165 |

| 7 | 100 |

| 8 | 701 |

+ -+ -+

9 rows in set (0.00 sec) Example 14.40 mysql> select C.CategoryName, -> SUM(P.unitsInsStock) AS Units -> FROM products as P -> join categories AS C ON C.CategoryID= -> P.CategoryID Group By C.CategoryName; + -+ -+

| CategoryName | Units | + -+ -+

| Beverages | 559 |

| Condiments | 507 |

| Confections | 386 |

| Dairy Products | 393 | | Grains/Cereals | 308 | | Meat/Poultry | 165 | | Produce | 100 |

| Seafood | 701 |

+ -+ -+

8 rows in set (0.00 sec)

14.4.2 String Functions

SQL provides a number of basic string functions, as listed in Table 14.5

Table 14.5 MySQL String Functions

Function

CONCAT(string1,string2, )[a]

string

LOWER(string)

SUBSTRING(string, position)

TRANSLATE

TRIM(' string ');

UPPER(string)

14.41)

Trang 14

SQL99 defines a concatenation operator (||) to use with the CONCATENATE() function MySQL uses the concat() function shown in Table 14.5

3 rows in set (0.00 sec)

mysql> select lower(CompanyName) as 'Company' FROM shippers; + -+

3 rows in set (0.00 sec)

14.4.3 Date and Time Functions

To get the date and time, MySQL provides the functions shown in Table 14.6

Table 14.6 MySQL Date and Time Functions

Function Example

CURDATE() select CURDATE(); > '2006-12-15'

CURTIME() select CURTIME(); > '23:50:26'

DAYOFYEAR(date) select DAYOFYEAR('2006-12-15'); > 349

DAYOFMONTH(date) select DAYOFMONTH('2006-12-15'); > 15

DAYOFWEEK(date) select DAYOFWEEK('2006-12-15'); > 6

Trang 15

Table 14.6 MySQL Date and Time Functions

Function Example

WEEKDAY(date) select WEEKDAY('2006-12-15'); > 4

MONTHNAME(date) select MONTHNAME('2006-12-15'); > December

DAYNAME(date) select DAYNAME('2006-12-15'); > Friday

YEAR(date) select YEAR('2006-12-15'); > 2006

QUARTER(date) select QUARTER('2006-12-15'); > 4

1 row in set (0.00 sec)

mysql> select CURDATE();

1 row in set (0.03 sec)

mysql> select CURTIME();

1 row in set (0.01 sec)

Formatting the Date and Time

When retrieving dates and times from a table, you might find you want to format the output For example, when selecting the dates of the orders from the orders table in the “northwind” database, the result-set is not user friendly Date values in SQL are always saved in MM/DD/YY(YY) format The DATE_FORMAT() and TIME_FORMAT() functions (see Example 14.43) are provided with a list of parameters (see Table 14.7) used to specify how the the output should be displayed

Trang 16

Example 14.43

mysql> select DATE_FORMAT('2006-03-23', '%W %M %d, %Y') as Today;

+ -+

| Today |

+ -+

| Thursday March 23, 2006 | + -+

1 row in set (0.00 sec) mysql> select DATE_FORMAT(OrderDate,'%M %e, %Y - %l:%i %p') FROM orders LIMIT 5; + -+

| DATE_FORMAT(OrderDate,'%M %e, %Y - %l:%i %p') | + -+

| July 4, 1996 - 12:00 AM |

| July 5, 1996 - 12:00 AM |

| July 8, 1996 - 12:00 AM |

| July 8, 1996 - 12:00 AM |

| July 9, 1996 - 12:00 AM |

+ -+

5 rows in set (0.00 sec)

Table 14.7 DATE_FORMAT() and TIME_FORMAT()

%a

%b

%c

%d

%D

%e

%f

%H

%h

%i

%I

%j

%k

Trang 17

Table 14.7 DATE_FORMAT() and TIME_FORMAT()

The MySQL EXTRACT Command

The EXTRACT command is an example of a MySQL extension, not described in the SQL standard It allows you to extract different parts of a date or time, as shown in Table 14.8

Table 14.8 Date and Time Parts

Type Format

Trang 18

Table 14.8 Date and Time Parts

14.5.1 What You Should Know

Now that you have finished this chapter you should be able to answer the following questions:

1

2

3

Trang 19

Description

integer(size)int(size)

Trang 20

sizedecimal(size,d)

school

5

LastName: Doe Email: johndoe@smileyface.edu CellPhone: 408-333-3456 Major: CIS

GPA: 2.8 StartDate: 09/22/2004 (use the correct date format!)

LastName: Chin Email: mchin@qmail.com CellPhone: 408-204-1234 Major: Biology

GPA: 3.3 StartDate: 06/22/2003

LastName: Pamel Email: sadi@univ_ab.edu CellPhone: 415-204-1234 Major: CIS

Trang 21

CellPhone: 415-204-1234 Major: CIS

GPA: 3.9 StartDate: 06/22/2003

a The data in all of the columns

b The first and last name of the students

c The student’s first and last name and major

d The student’s cellphone and e-mail addresses

e Any distinct majors

f Only 2 rows

8 a Select all students who have a GPA over 3.0

b Select all students who have a GPA between 3.0 and 4.0

c Select students whose cell phones are in the 408 area code

d Display rows for students who started in 2003

e Select student first and last names who are majoring in CIS and have a GPA over 3.5

f Select student first name and e-mail address if the e-mail address ends in com

9 1 Insert a new entry into the table

2 Sort the student table by last names

3 Sort the student table by GPA in descending order

Trang 22

Chapter 15 PHP and MySQL Integration

15.1 Introduction

The user has filled out a form and submitted it It contains a list of items he or she wants to purchase The information

for that user is stored in a database table called “customers” You want to retrieve all the orders and product information

for that customer from the database and display selected data on the Web page directly from your PHP script Now you

will learn how to integrate PHP and MySQL

PHP provides built-in functions that allow all the necessary operations for opening and selecting the database, and for

sending it SQL queries to create tables, update and delete them, retrieve records, and display the results You can create

your HTML form, process it, and connect to the MySQL database all in one PHP program!

At the beginning of this book, we described PHP and MySQL as a perfect marriage In this chapter, we see how that

marriage works

15.1.1 Connecting to the Database Server

To establish a connection to the MySQL database server from your PHP script, use the PHP mysql_connect()

$link = mysql_connect("localhost", "root", "password");

The first argument is the host server where the MySQL server will be running It can also include an IP address, port

number, a path to a local socket, and so on The second argument is the username, the default value for the name of the

owner of the server process The next argument is the password, if there is one

If a second call is made to mysql_connect() with the same arguments, a new link will not be established, but

instead, the link identifier of the already opened link will be returned If you specify the new_link parameter,

mysql_connect() will always open a new link

If the connection is successful, mysql_connect() returns the connection link and if not, the function returns

FALSE The resource returned points to the database server and is used by all the other mysql functions in the script

When a Web page or PHP script ends, the database is automatically closed and the resource that links to it is released,

so that if you start another page you will have to reconnect to the database If you want to close the database before the

program ends, PHP provides the mysql_close() function The mysql_close() function closes the connection to

the MySQL server referenced by the link

Format

bool mysql_close ( [resource link_identifier]

Example:

mysql_close($link);

Trang 23

Example 15.1

<?php

print "Opening the connection to the database server< br />";

1 $link = mysql_connect("localhost", "root", "password");

2 print "The connection worked The link is: $link < br />"; print "Closing the connection< br />";

mysql_close()mysql_connect() mysql_close()

Figure 15.1 Opening and closing a connection to the database server Output from Example 15.1

15.1.2 Choosing the Database

Once connected to the database server, the next step is to set the default database that you will be using The

mysql_select_database() function is used to select a MySQL database (This is the equivalent to the use command when using mysql client.) The first argument is the name of the database The second argument is the MySQL connection (the link) established when the mysql_connect() function was executed

Format

bool mysql_select_db ( string database_name [, resource link_identifier] )

Trang 24

1 mysql_connect("localhost", "root", "password");

print "Selecting a database< br />";

2 $result = mysql_select_db( "northwind" );

Trang 25

15.1.3 Executing SQL Statements (INSERT, UPDATE, DELETE)

Once connected to the database server, and having selected a database, it is time to start executing SQL commands PHP provides the mysql_query() function to perform database queries You must have adequate permissions to execute queries on a given database (see “The Grant and Revoke Commands” on page 589)

on success or FALSE on error

PHP provides a number of functions to deal with the result, such as mysql_fetch_array(),

mysql_num_rows(), mysql_affected_rows(), and so on You can also use the built-in error-handling functions to find out where a query failed

You can test that your SQL statement is valid by executing it in any other client, such as the mysql command line For INSERT, UPDATE, and DELETE, this function will return TRUE if the operation was successful and FALSE otherwise

1 $link = mysql_connect("localhost", "ellie", "");

print "Selecting the 'northwind' database< br />";

2 mysql_select_db("northwind");

3 $query="UPDATE Shippers SET phone='(777) 430-2346'

WHERE CompanyName = 'Federal Shipping'";

4 $result= mysql_query($query);

5 $rows_affected= mysql_affected_rows($link); /* numbers of rows

affected by the most recently executed query */

echo "You have updated $rows_affected rows.< br />";

Ngày đăng: 21/01/2014, 09:20

TỪ KHÓA LIÊN QUAN