Phát triển ứng dụng mã nguồn mở - Bài 3.1: PHP và mysql
• Cài đặt php, mysql và php-mysql. • Kết nối PHP với MySQL khai thác cơ sở dữ liệu. • Phối hợp Netbeans và Web Server • Ví dụ.
Bạn đang xem trước 20 trang tài liệu Phát triển ứng dụng mã nguồn mở - Bài 3.1: PHP và mysql, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
Đoàn Thiện Ngân Bài 3.1 - 1/24
Bài 3.1
PHP & MySQL
GV: ĐOÀN THIỆN NGÂN
Đoàn Thiện Ngân Bài 3.1 - 2/24
Nội dung
• Cài đặt php, mysql và php-mysql.
• Kết nối PHP với MySQL khai thác cơ sở
dữ liệu.
• Phối hợp Netbeans và Web Server
• Ví dụ.
Đoàn Thiện Ngân Bài 3.1 - 3/24
Tài liệu tham khảo
1. PHP Manual.
2. W3schools
3. MySQL Manual.
4. Beginning PHP and MySQL: From Novice
to Professional, 4th Edition, W. Jason
Gilmore, 2010
5. PHP Application Development with
NetBeans Beginner's Guide, M.A. Hossain
Tonu, Packt Publishing, 2012
Đoàn Thiện Ngân Bài 3.1 - 4/24
PHP - MySQL
Linux
• Cài mysql và mysql-server.
• Cài Apache web server, PHP
• Để dùng MySQL kèm PHP, cài thêm php-
mysql (yum tự động chọn thêm php-pdo)
MS Windows:
• Cài theo thứ tự Apache, php và MySQL
• dùng WAMP, XAMP, APPSERVE,
Kiểm tra với trang phpinfo() có mặt mysql và
mysqli trong cấu hình PHP (hay Kiểm tra cấu
hình /etc/php.ini)
Đoàn Thiện Ngân Bài 3.1 - 5/24
Kiểm tra phpinfo()
Đoàn Thiện Ngân Bài 3.1 - 6/24
Chuẩn bị MySQL User
• MySQL có sẵn user root (dùng thử
nghiệm kết nối PHP qua MySQL)
• Phải đặt mật khẩu cho root để tăng tính
bảo mật khi truy cập qua mạng (bắt buộc
trước khi thử các trang web).
• Có thể dùng lệnh hay Manage Security
của MySQL Workbench .
$ mysql –u root
mysql> set password for
root@localhost = password('secret');
Đoàn Thiện Ngân Bài 3.1 - 7/24
Manage Security
• Hay dùng MySQL
Workbench
– Server
Administration
– Manage Security
• Dùng gedit
(Bluefish,
Netbeans, ) thử
soạn thảo các
trang php kết nối
với MySQL.
Đoàn Thiện Ngân Bài 3.1 - 8/24
Đoàn Thiện Ngân Bài 3.1 - 9/24
Netbeans & WAMP server
• Tạo thư mục trong wamp server (wwwroot
của Apache server) hay tạo alias (xem
Apache manual tạo alias) lưu Netbeans
projects để dễ thử các chương trình php.
• Netbeans (hay hơn Expression Web 4):
– Tạo project PHP
– Tạo files trong thư mục project
– Có thể tạo index.html trong thư mục project để
dễ gọi trang web cần thử.
– Có cơ chế intellisense code hỗ trợ lập trình PHP
rất tốt
– dễ dàng cấu hình thử nghiệm với webserver
Đoàn Thiện Ngân Bài 3.1 - 10/24
Application Programming Interface
• An Application Programming Interface, or
API, defines the classes, methods,
functions and variables that your
application will need to call in order to
carry out its desired task.
• In the case of PHP applications that need
to communicate with databases the
necessary APIs are usually exposed via
PHP extensions.
Đoàn Thiện Ngân Bài 3.1 - 11/24
What is an Extension?
• An PHP extension typically exposes an API
to the PHP programmer, to allow its facilities
to be used programmatically. However, some
extensions which use the PHP extension
framework do not expose an API to the PHP
programmer.
• The PDO MySQL driver extension, for
example, does not expose an API to the PHP
programmer, but provides an interface to the
PDO layer above it.
• The terms API and extension should not be
taken to mean the same thing, as an
extension may not necessarily expose an
API to the programmer.
Đoàn Thiện Ngân Bài 3.1 - 12/24
PHP's MySQL Extension
• Three main API options when considering
connecting to a MySQL database server:
– PHP's MySQL Extension (old, not good)
– PHP's mysqli Extension
– PHP Data Objects (PDO)
• Each has its own advantages and
disadvantages.
Đoàn Thiện Ngân Bài 3.1 - 13/24
MySQLI Extension
• The mysqli extension allows you to access
the functionality provided by MySQL 4.1
and above.
• The mysqli extension has a number of
benefits, the key enhancements over the
mysql extension being:
– Object-oriented interface
– Support for Prepared Statements
– Support for Multiple Statements
– Support for Transactions
– Enhanced debugging capabilities
– Embedded server support
Đoàn Thiện Ngân Bài 3.1 - 14/24
Using the mysqli Extension
• PHP’s mysqli extension offers all of the
functionality provided by its predecessor,
in addition to new features that have been
added as a result of MySQL’s evolution
into a full-featured database server.
• This section shows you how to use the
mysqli extension to
– connect to the database server
– query for and retrieve data
–
Đoàn Thiện Ngân Bài 3.1 - 15/24
Các hàm mysqli
• mysqli_connect();
mysqli_connect_errno();
mysqli_connect_error();
mysqli_fetch_array();
mysqli_fetch_object();
mysqli_fetch_row();
mysqli_fetch_fields();
mysqli_fetch_field();
• Chú ý: với mysqli có thể dùng OOP hay
dùng hàm (xem ví dụ kèm theo)
Đoàn Thiện Ngân Bài 3.1 - 16/24
connectmysql.php
<?php
// Connect to the database server - OOP
$mysqli = new
mysqli('localhost', 'root', 'secret', 'sakila');
if ($mysqli->connect_errno) {
printf("Unable to connect to the database:%s",
$mysqli->connect_error);
exit();
}
else
{
echo "Good connection";
}
?>
Đoàn Thiện Ngân Bài 3.1 - 17/24
conmysql2.php
<?php
$HOST='localhost';
$USER='root';
$PWD='secret';
$DB='sakila';
$mysqli=new mysqli($HOST,$USER,$PWD,$DB);
//$mysqli = new mysqli('localhost', 'root', 'secret', 'sakila');
?>
Đoàn Thiện Ngân Bài 3.1 - 18/24
dbconfig.php
• Thường dùng tập tin cấu hình db lưu dạng
*.php và dùng require_once để gọi.
<?php
$HOST='localhost';
$USER='root';
$PWD='secret';
$DB='sakila';
?>
Đoàn Thiện Ngân Bài 3.1 - 19/24
mysqli_oop.php
require_once 'dbconfig.php';
$mysqli = new mysqli($HOST,$USER,$PWD,$DB);
if (! $mysqli->connect_errno) {// Create the query
$query = 'SELECT * FROM actor ORDER by actor_id';
// Send the query to MySQL
$result = $mysqli->query($query, MYSQLI_STORE_RESULT);
// Iterate through the result set
while(list($actor_id, $first_name, $last_name) =
$result->fetch_row())
printf("(%s) %s: \$%s ", $actor_id,
$first_name, $last_name);
} else
echo “Can't connect to $DB”.$mysqli->connect_error;
Đoàn Thiện Ngân Bài 3.1 - 20/24
mysqli_function.php
require_once 'dbconfig.php';
$mycon=mysqli_connect($HOST,$USER,$PWD,$DB);
if (!mysqli_connect_errno()) { // Create the query
$query = 'SELECT * FROM actor ORDER by actor_id';
// Send the query to MySQL
$result = mysqli_query($mycon, $query);
// Iterate through the result set
while(list($actor_id, $first_name, $last_name) =
$result->fetch_row())
printf("(%s) %s: \$%s ", $actor_id,
$first_name, $last_name);
} else
echo “Can't connect to $DB”.mysqli_connect_error();
Đoàn Thiện Ngân Bài 3.1 - 21/24
Tabledatamysql.php
$query = 'SELECT * FROM actor ORDER by
actor_id';
// Send the query to MySQL
$result = $mysqli->query($query,
MYSQLI_STORE_RESULT);
// Iterate through the result set
echo "\n";
while($line = $result->fetch_row()) {
echo "\t\n";
foreach ($line as $col_value)
echo "\t\t$col_value\n";
echo "\t\n";
}
echo "\n";
Đoàn Thiện Ngân Bài 3.1 - 22/24
mysqli_result::fetch_array
if ($mysqli->connect_errno) {
printf("Failed to connect to MySQL: %s\n",
$mysqli->connect_error); exit();
}
$sql = "select * from actor where actor_id < 10
order by actor_id;";
$result = $mysqli->query($sql, MYSQLI_STORE_RESULT);
// Fetch
while ($data = $result->fetch_array()) {
// while ($data = $result->fetch_array(MYSQLI_BOTH))
// while ($data = $result->fetch_array(MYSQLI_ASSOC))
echo "";
print_r($data);
}
// Free result set
$result->free();
$mysqli->close();
Đoàn Thiện Ngân Bài 3.1 - 23/24
mysqli_fetch_array
$con=mysqli_connect($HOST, $USER, $PWD, $DB);
// Check connection
if (mysqli_connect_errno()) {
printf("Failed to connect to MySQL: %s\n",
mysqli_connect_error()); exit(); }
$sql = "SELECT * FROM actor WHERE actor_id < 10
ORDER by actor_id;";
$result = mysqli_query($con,$sql,
MYSQLI_STORE_RESULT);
// Fetch
while ($data = mysqli_fetch_array($result)) {
// while ($data = mysqli_fetch_array($result,MYSQLI_ASSOC)) {
// while ($data = mysqli_fetch_array($result, MYSQLI_BOTH)) {
echo ""; print_r($data); }
// Free result set
mysqli_free_result($result);
mysqli_close($con);
Đoàn Thiện Ngân Bài 3.1 - 24/24
???
• MySQL và PHP
–Đặt mật khẩu cho mySQL DBA root
– Cài đặt và kiểm tra sự hỗ trợ MySQL
trong Apache và PHP
– Kết nối với MySQL qua trang PHP
– Sử dụng mysqli truy cập dữ liệu với
MySQL qua trang PHP
– Thử viết trang PHP: Insert, Update,
Delete
– Thử dùng Views, Stored routines với
MySQL.