Chương 3 : SỬ DỤNG PHP VỚI MYSQL
Ở chương 2, chúng ta đã tạo được trang Web với việc sử dụng những hàm. Nhưng
chúng ta chưa thực sự hiểu mối quan hệ giữa MySQL và PHP. Trong chương này chúng
ta sẽ xét kỹ điều này.
Trong chương này nói đến các vấn đề:
Hiểu biết về cơ sở dữ liệu MYSQL.
Những dữ liệu chứa trong MySQL.
Tác động những thông tin đặc biệt, quyền từ Web site.
Phần mềm quản lý bảng dễ dàng.
Có thể sửa chữa code theo ý muốn.
Đọc, tạo cơ sở dữ liệu
Để tạo một cơ sở dữ liệu cho bạn cần 3 bảng:
Một bảng movie: Ta sẽ lưu trữ tên và thông tin của movie.
Một bảng movietype: Nơi lưu trữ những catalog của movie.
Một bảng people: Ta sẽ lưu trữ tên của các diễn viên và đạo diễn.
Ví dụ tạo cơ sở dữ liệu và bảng
Tạo trang php với tên: createmovie.php
<?php
//connect to MySQL; note we‟ve used our own parameters-
you should use
//your own for hostname, user, and password
$connect = mysql_connect(“localhost”, “root”, “”) or
die (“Hey loser, check your server connection.”);
//create the main database if it doesn‟t already exist
$create = mysql_query(“CREATE DATABASE IF NOT
EXISTS moviesite”) or die(mysql_error());
//make sure our recently created database is the active one
mysql_select_db(“moviesite”);
//create “movie” table
$movie = “CREATE TABLE movie (
movie_id int(11) NOT NULL auto_increment,
movie_name varchar(255) NOT NULL,
movie_type tinyint(2) NOT NULL default 0,
movie_year int(4) NOT NULL default 0,
movie_leadactor int(11) NOT NULL default 0,
movie_director int(11) NOT NULL default 0,
PRIMARY KEY (movie_id),
KEY movie_type (movie_type,movie_year))”;
$results = mysql_query($movie)
or die (mysql_error());
//create “movietype” table
$movietype = “CREATE TABLE movietype (
movietype_id int(11) NOT NULL auto_increment,
movietype_label varchar(100) NOT NULL,
PRIMARY KEY (movietype_id))”;
$results = mysql_query($movietype)
or die(mysql_error());
//create “people” table
$people = “CREATE TABLE people (
people_id int(11) NOT NULL auto_increment,
people_fullname varchar(255) NOT NULL,
people_isactor tinyint(1) NOT NULL default 0,
people_isdirector tinyint(1) NOT NULL default 0,
PRIMARY KEY (people_id))”;
$results = mysql_query($people)
or die(mysql_error());
echo “Movie Database successfully created!”;
?>
Tiếp theo ta tạo trang php với tên: moviedata.php
<?php
//connect to MySQL
$connect = mysql_connect(“localhost”, “root”, “”)
or die (“Hey loser, check your server connection.”);
//make sure we‟re using the right database
mysql_select_db(“moviesite”);
//insert data into “movie” table
$insert = “INSERT INTO movie (movie_id, movie_name,
movie_type, “ .
“movie_year, movie_leadactor, movie_director) “ .
“VALUES (1, „Bruce Almighty‟, 5, 2003, 1, 2), “ .
“(2, „Office Space‟, 5, 1999, 5, 6), “ .
“(3, „Grand Canyon‟, 2, 1991, 4, 3)”;
$results = mysql_query($insert)
or die(mysql_error());
//insert data into “movietype” table
$type = “INSERT INTO movietype (movietype_id,
movietype_label) “ .
“VALUES (1,‟Sci Fi‟), “ .
“(2, „Drama‟), “ .
“(3, „Adventure‟), “ .
“(4, „War‟), “ .
“(5, „Comedy‟), “ .
“(6, „Horror‟), “ .
“(7, „Action‟), “ .
“(8, „Kids‟)” ;
$results = mysql_query($type)
or die(mysql_error());
//insert data into “people” table
$people = “INSERT INTO people (people_id, people_fullname, “
.“people_isactor, people_isdirector) “ .
“VALUES (1, „Jim Carrey‟, 1, 0), “ .
“(2, „Tom Shadyac‟, 0, 1), “ .
“(3, „Lawrence Kasdan‟, 0, 1), “ .
“(4, „Kevin Kline‟, 1, 0), “ .
“(5, „Ron Livingston‟, 1, 0), “ .
“(6, „Mike Judge‟, 0, 1)”;
$results = mysql_query($people)
or die(mysql_error());
echo “Data inserted successfully!”;
?>
Chúng làm việc như thế nào?
Đầu tiên ta thực hiện kết nối đến My SQL server, sau đó tạo lập cơ sở dữ
liệu nếu không tạo được sẽ đưa ra thông báo lỗi.
Sau đó bắt đầu tạo từng bảng riêng lẻ
Đưa dữ liệu vào các bảng
Truy vấn cơ sở dữ liệu
Chúng ta đã tạo ra cơ sở dữ liệu, bây giờ muốn nhận lại thông tin từ dữ liệu đó,
dùng công thức như sau:
SELECT [fieldnames]
AS [alias]
FROM [tablename]
WHERE [criteria]
ORDER BY [fieldname to sort on] [DESC]
LIMIT [offset, maxrows]
SELECT [fieldnames]: Quyết định đầu tiên mà vùng chứa tên đặc biệt
mà bạn muốn nhận lại. Nếu bạn muốn thấy tất cả thông tin bạn chỉ cần
chọn dấu *
AS: Bạn có thể sử dụng bí danh để nhóm hai hoặc nhiều hơn hai vùng
khác nhau mà có thể chuyển đến chúng * như là một biến lớn
SELECT first_name, last_name AS full_name. . . ORDER BY full_name . . .
Bạn không thể sử dụng tham số AS với tham số WHERE, bởi vì nó bị giới hạn trong
MY SQL. Khi WHERE được thực thi thì cột giá trị không biết
FROM: Tên bảng cần truy xuất thông tin
WHERE: Danh sách điều kiện chọn lọc dữ liệu
ORDER BY: Để sắp xếp dữ liệu trong vùng
LIMIT: Giới hạn kết quả trả về