Kết nối CSDL với PHP NỘI DUNG TRÌNH BÀY KỸ THUẬT KẾT NỐI CSDL MYSQL TRONG PHP CÚ PHÁP INCLUDE TRONG PHP PHÂN TRANG TRONG PHP KẾT NỐI CSDL KHÁC Các bước truy cập CSDL MySQL Tạo kết nối đến database server Lựa chọn CSDL Xây dựng truy vấn và thực hiện truy vấn Xử lý kết quả trả về Đóng kết nối cơ sở dữ liệu
Trang 10512278 – Nguyễn Xuân Quyền
0512346 – Lê Thị Kim Thúy
Trang 2NỘI DUNG TRÌNH BÀY
KỸ THUẬT KẾT NỐI CSDL MYSQL TRONG PHP
Trang 3Kỹ thuật kết nối CSDL MySQL trong
PHP
Trang 4Lê Văn Bình * / 62
Các bước truy cập CSDL MySQL
1.Tạo kết nối đến database server
Trang 5Bước 1
$biến_kết_nối =
ật_khẩu”)
or die(“Không kết nối được”);
•Hàm die(“Chuỗi”): Đưa ra thông báo và kết thúc
•Với cách viết trên, die chỉ thực hiện khi lệnh trước nó không thành công
•Trả về FALSE nếu không kết nối không thành công
Trang 6Lê Văn Bình * / 62
Bước 1 (tt)
Trang 7Bước 2
mysql_select_db(“Tên CSDL”,$link)
or die (“Chưa có CSDL”);
•$link là biến tùy chọn,có giá trị là kết quả trả về
từ chuỗi kết nối ở bước 1
•Nếu thành công trả về TRUE,ngược lại là FALSE
Trang 8Lê Văn Bình * / 62
Bước 2 (tt)
Trang 9Bước 3
$biến = mysql_query(“Lệnh SQL”,$link) or die(“Không thực hiện được SQL”);
Trang 11mysql_num_rows($rs): Số lượng bản ghi trong $rs
$r=mysql_fetch_array($rs): Trả 1 dòng của $rs vào
$r
Trang 12Lê Văn Bình * / 62
Bước 5
• Đóng kết nối cơ sở dữ liệu
mysql_close($biến_kết_nối)
Trang 13CÚ PHÁP INCLUDE TRONG PHP
Trang 14Thái Hồng Phúc * / 62
include
• Mục đích: include() là 1 hàm gọi liên kết tới một file, nội dung file đó sẽ được chèn vào file đang gọi hàm include khi thực thi.
• Cú pháp:
[ gia_tri_tra_ve ] = include([ include_file ]);
• include thành công: gia_tri_tra_ve = 1;
• include không thành công: warning nhưng vẫn cho phép chương trình tiếp tục thực thi
Trang 15• [ gia_tri_tra_ve ] = include([ include_file ]);
•File include có thể là bất kỳ dạng file nào(*.php /
*.html ).
•include_file có thể là địa chỉ tương đối/ URL/ đường dẫn tuyệt đối của file nằm trên server.
• Ý nghĩa:
Tạo 1 file php thư viện và include nó vào nhiều
trang Khi cần chỉnh sửa, chỉ cần thay đổi trong file thư viện.
Trang 16Thái Hồng Phúc * / 62
CÁC HÀM LIÊN QUAN
• [ gia_tri_tra_ve ] = include ([ include_file ]);
•include thành công: gia_tri_tra_ve = 1;
•include không thành công: warning nhưng vẫn cho phép chương trình tiếp tục thực thi
[ gia_tri_tra_ve ] = require ([ include_file ]);
•include thành công: gia_tri_tra_ve = 1;
•include không thành công: thông báo lỗi và không tiếp tục thực thi chương trình.
•Nếu nhất thiết phải có file đó thì dùng require , còn không thì dùng include.
Trang 17CÁC HÀM LIÊN QUAN
[gia_tri_tra_ve] = require_once([include_file]);
[gia_tri_tra_ve] = include_once([include_file]);
thay vì một lần
Trang 18Thái Hồng Phúc * / 62
TÌM KIẾM INCLUDE_FILE
• Nếu có setup include_path, include_file sẽ được tìm kiếm đầu tiên trong các include_path, sau đó mới
tìm trong thư mục chứa tài liệu PHP hiện tại.<?php
//test.php nằm trong thư mục /www/
//include_path là /www/libraries/
include 'vars.php';?>
• vars.php được tìm trong /www/libraries/ Nếu không thấy, tìm vars.php trong /www/
Trang 19$color = 'green';$fruit = 'apple';?>//test.php<?
phpecho "A $color $fruit"; //Ainclude 'vars.php';
echo "A $color $fruit"; //A green apple?>
Trang 20Lê Thị Kim Thúy * / 62
Phân trang trong PHP
Trang 21Phân trang trong PHP
• Giới thiệu.
• Nguyên tắc của việc phân trang.
• Ví dụ.
Trang 22Lê Thị Kim Thúy * / 62
Giới thiệu
•Giới thiệu:
Khi có một truy vấn dữ liệu nhận về một danh sách kết quả quá dài, người ta thường phải phân trang ứng dụng cho phù hợp.
•Nguyên tắc phân trang:
- Bước 1: Tính tóan số lượng bản ghi thỏa mãn điều kiện trả
về ( thường sử dụng hàm count trong câu lệnh SQL).
- Bước 2: Xác định số lượng bản ghi sẽ hiển thị trên một trang.
- Bước 3: Dựa trên các thông tin có được từ bước 1 và 2, xác định được số trang cần hiển thị.
- Bước 4: Tính tóan số lượng bản ghi sẽ hiển thị tính từ trang nào đó do NSD lựa chọn (Sử dụng câu lệnh LIMIT)
Trang 23Ví dụ 1:
<?php //thuc hien ket noi co so du lieu
// how many rows to show per page
$rowsPerPage = 20; // by default we show first page
$pageNum = 1; // if $_GET['page'] defined, use it as page number
if(isset($_GET['page']))
{
$pageNum = $_GET['page'];
} // counting the offset
$offset = ($pageNum - 1) * $rowsPerPage;
$query = "SELECT val FROM randoms
LIMIT $offset, $rowsPerPage";
$result = mysql_query($query) or die('Error, query failed');
…
Trang 24Lê Thị Kim Thúy * / 62
echo '<br>'; // how many rows we have in database
$query = "SELECT COUNT(val) AS numrows FROM randoms"
;
$result = mysql_query($query) or die('Error, query failed');
$row = mysql_fetch_array($result, MYSQL_ASSOC);
$numrows = $row['numrows']; // how many pages we have when using paging?
$maxPage = ceil($numrows/$rowsPerPage);
…
Trang 26Lê Thị Kim Thúy * / 62
Ví dụ 1
………
// creating previous and next link
// plus the link to go straight to the first and last page if ($pageNum > 1)
$prev = ' '; // we're on page one, don't print previous link
$first = ' '; // nor the first page link
$next = ' '; // we're on the last page, don't print next link
$last = ' '; // nor the last page link
} // print the navigation link echo $first $prev $nav $next $last;
//đóng kết nối cơ sở dữ liệu
?>
Trang 27Ví dụ 1: kết quả
Trang 28Lê Thị Kim Thúy * / 62
Ví dụ 2:
<?php // thuc hien ket noi co so du lieu ….
// how many pages we have when using paging?
$maxPage = ceil($numrows/$rowsPerPage);
$self = $_SERVER['PHP_SELF'];// creating 'previous' and 'next' link // plus 'first page' and 'last page' link
// print 'previous' link only if we're not
on page oneif ($pageNum > 1)
Trang 29Ví dụ 2:
…
// print 'next' link only if we're not
on the last pageif ($pageNum < $maxPage)
$last = ' [Last Page] '; // nor 'last page' link
}// print the page navigation linkecho $first $prev " Showing page
<strong>$pageNum</strong> of <strong>$maxPage</strong> page
s " $next $last;
//đóng kết nối cơ sở dữ liệu
?>
Trang 30Lê Thị Kim Thúy * / 62
Ví dụ 2:
Trang 31Ví dụ 3:
<?php //Thực hiện kết nổi cơ sở dữ liệu
// how many rows to show per page $rowsPerPage = 3; // by default we show first page $pageNum = 1; // if $_GET['page'] defined, use it as page number if( isset($_GET['page']))
{
$pageNum = $_GET['page'];
} // counting the offset $offset = ($pageNum - 1) * $rowsPerPage; $query =
“SELECT id, name, address, age, register_date
FROM student
LIMIT $offset, $rowsPerPage";
$result = mysql_query($query) or die('Error, query failed');
Trang 32
Lê Thị Kim Thúy * / 62
$result = mysql_query($query) or die('Error, query failed');
$row = mysql_fetch_array($result, MYSQL_ASSOC);
$numrows = $row['numrows']; // how many pages we have when using pagin g? $maxPage = ceil($numrows/$rowsPerPage);
$self = $_SERVER['PHP_SELF'];
…
Trang 33Ví dụ 3
…
// creating 'previous' and 'next' link
// plus 'first page' and 'last page' link
// print 'previous' link only if we're not
// on page oneif ($pageNum > 1)
{
$page = $pageNum - 1;
$prev = " <a href=\"$self?page=$page\">[Prev]</a> ";
$first = " <a href=\"$self?page=1\">[First Page]</a> ";
Trang 34Lê Thị Kim Thúy * / 62
Ví dụ 3
…
// print 'next' link only if we're not
// on the last page if ($pageNum < $maxPage)
{
$page = $pageNum + 1;
$next = " <a href=\"$self?page=$page\">[Next]</a> ";
$last = " <a href=\"$self?page=$maxPage\">[Last Page]</a> ";
} // print the page navigation link echo $first $prev " Showing page <strong
>$pageNum</strong> of <strong>$maxPage</strong> pages " $next $la st; //đóng kết nổi cơ sở dữ liệu ?>
Trang 35Ví dụ 3
Trang 36Nguyễn Xuân Quyền * / 62
Kết nối CSDL khác
Trang 38Nguyễn Xuân Quyền * / 62
Kết nối CSDL khác
1.PHP và CSDL Oracle
Trang 40Nguyễn Xuân Quyền * / 62
Example: user sở hửu table
OCIExecute: dùng thực thi câu lệnh SQL
Trang 41//khai báo header của table hai cột ID và Name
print “<TABLE CELLSPACING=\ ”0 \ ””;
print “CELLPADDING =\ ”.3 \ “ BORDER=\ “1\ “>\n”;
print “<TR><TH>ID</TH><TH>Name</TH></TR>\n”;
Trang 42Nguyễn Xuân Quyền * / 62
//đọc dữ liệu của cột EMPID
print “</TD>\n”;
print “<TD>”;
//đọc dữ liệu của cột NAME
print OCIResult($stmt, “NAME”);
Trang 43PHP và CSDL Oracle
•B4: Kiểm tra quyền người dùng
Để Authentication người dùng cơ sở dữ liệu Oracle, khai báo như sau:
echo “You are not unauthorised to enter the ”;
echo “site </blockquote> \n”;
exit;
}
Trang 44Nguyễn Xuân Quyền * / 62
PHP và CSDL Oracle
else
{
if(!($conn=ora_logon(“$PHP_AUTH_USER@SID”, $PHP_AUTH_PW))) {
Header(“WWW-authenticate: basic realm=\ “$SID\ “”);
Header(“HTTP/1.0 401 Unauthorized”);
$title = “Login Instructions”;
echo “<blockquote> ”;
echo “You are not unauthorised to enter the ”;
echo “site </blockquote> \n”;
exit;
} }
?}
Trang 45Kết nối CSDL khác
2 PHP và CSDL PostgreSQL
Trang 46Nguyễn Xuân Quyền * / 62
Trang 47//khai báo, thực thi
$query = “SELECT * FROM friends”;
$result = pg_exec($db, $query);
Trang 48Nguyễn Xuân Quyền * / 62
Trang 49//khai báo, thực thi
$query = “SELECT * FROM friends”;
$result = pg_exec($db, $query);
Trang 50Nguyễn Xuân Quyền * / 62
Trang 51$query = “UPDATE friends SET firstname =
‘$firstname’, surname = ‘$surname’ WHERE id = ‘$id’”;
…
?>
Trang 52Nguyễn Xuân Quyền * / 62
PHP và CSDL PostgreSQL
Thay chuỗi query thành câu lệnh delete trong truy vấn SQL
Ví dụ:
<?php
…
$query = “DELETE friends SET firstname =
‘$firstname’, surname = ‘$surname’ WHERE id = ‘$id’”;
…
?>
Trang 53Kết nối CSDL khác
3 PHP và CSDL MS Access
Trang 54Nguyễn Xuân Quyền * / 62
PHP và CSDL MS Access
<?php
//khởi tạo đối tượng kết nối CSDL
$conn = new COM(“ALODB.Connection”) or die(“Cannot
Trang 55PHP và CSDL MS Access
•Trong trường hợp kết nối bằng ODBC:
$conn->Open(“Provider=Microsoft.Jet.OLEDB.4.0; Data
Trang 56Nguyễn Xuân Quyền * / 62
echo “<p>Below is a list of values in the ”;
echo “ MYDB.MDB database, MYABLE table, ”;
echo “ MYFIELD field.</p>”;
Trang 58Nguyễn Xuân Quyền * / 62
Kết nối CSDL khác
4 PHP và CSDL MS SQL Server
Trang 59PHP và CSDL MS SQL Server
<?php
//khởi tạo đối tựơng kết nối
$conn = new COM(“ADODB.Connection”) or die(“Cannot start
Trang 60Nguyễn Xuân Quyền * / 62
echo “<p>Below is a list of values in the ”;
echo “ Intershop database, MYABLE table, ”;
echo “ MYFIELD field.</p>”;
Trang 62LOGO