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

Bài giảng mã nguồn mở chương 6

18 263 0

Đ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

Định dạng
Số trang 18
Dung lượng 0,95 MB

Nội dung

Chương : PHP & MYSQL Giảng viên : ThS Nguyễn Minh Thành Email : thanhnm@itc.edu.vn Nội Dung Kết nối database server Truy cập CSDL thực thi câu lệnh Xử lý tiếng việt MySQL & PHP Phân trang liệu Kết nối database server 1- Cú pháp mysql_connect(server_name,username,password); Đối với localhost, dù webserver có PORT 81 không ghi thêm port, port mặc định database server MySQL 3306 Các phong cách sử dụng : 1- $con=mysql_connect(svn,usr,pss) or die(“Error :”.mysql_error()); 2- $con=mysql_connect(svn,usr,pss); if(!$con) {die(“Error :”.mysql_error(); //có thể thay đổi message} else{ // truy cập database } Ví dụ : $con=mysql_connect(“localhost”,”root”,””) or die(“Error :”.mysql_error()); Lưu ý: Hãy nhận xét hàm die() sử dụng if…else đây! Thực Thi Câu Lệnh SQL 1- Truy cập CSDL mysql_select_db(“database name", $con); với $con trả mysql_connect() thành công trước 2- Thực thi câu lệnh SQL mysql_query(“SQL_Statement”); Tùy theo câu lệnh SQL mà ta có kết trả hàm mysql_query() mà ta có mã PHP xử lý tương ứng + Câu lệnh Select : trả mảng record + Các câu lệnh khác : true/false tùy theo thành công hay không a)Câu lệnh SQL : Select… $strSQL=“Select * from table_name”; //nếu câu lệnh SQL dài, phức tạp $result = mysql_quer($strSQL); if($result) { trích xuất liệu mảng $result;} // !? else {echo “Records not found!”;} Thực Thi Câu Lệnh SQL (tt) b) Câu lệnh SQL : Create Database $result=mysql_query("CREATE DATABASE database_name",$con ); if($result) {echo “Database created!”;} else {echo “Could’nt create database,” mysql_error();} Tuy nhiên, để đảm bảo field kiểu char liệu theo mã UTF-8 cần thay đổi câu lệnh SQL: $strSQL="CREATE DATABASE VD2”; $strSQL+= “DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci"; $result=mysql_query($strSQL,$con ); if($result) {echo “Database created!”;} else {echo “Could’nt create database,”.mysql_error();} - Ta thường tạo CSDL thông qua công cụ riêng, sử dụng câu lệnh Tuy nhiên, tạo table lại hay sử dụng - Collate: đối chiếu, kiểm tra thứ tự (trang) c- Câu lệnh SQL: Create table $sql = "CREATE TABLE table_name ( field_name data_type[(length)] constraint,… ) ENGINE = MyISAM CHARACTER SET utf8 COLLATE utf8_unicode_ci"; Ví dụ : $sql=“Create table SV (Ma varchar(11) NOT NULL ,”; $sql+=HoTen varchar(30) not null , primary key(Ma)”; $sql+=“) engine = MyISAM” ; $result = mysql_query($sql,$con); if(!$result) {echo “Error”.mysql_error();} else { // mã PHP phù hợp} d- Câu lệnh Insert, Update $sql=“Insert into table_name(field_list) values(value_list); $result=mysql_query($sql); if(!$result) {echo mysql_error(); // xử lý tiếp;} else { //xử lý …} Việc sử dụng câu lệnh Upadte tương tự Lỗi xảy vi phạm ràng buộc toàn vẹn liệu - Sử dụng hàm die() cách hợp lý - Sử dụng transaction để điều khiển mạch chương trình Xem đọc thêm PHP trang web giảng viên e- Câu lệnh SQL: Select… $sql = “Select … ”; $result = mysql_query($sql); if(!$result) { echo “Record not found!”; } else { while($row = mysql_fetch_array($result)){ echo $row[‘firstField'] " " $row[‘secondField']; echo ""; } } // else mysql_close($con); // đóng kết nối Câu lệnh Select … from … where … limit start, total MySQL Trong start: record số start (>=0), Record thứ tự Total : tổng số record hiển thị Đây đặc điểm riêng MySQL fetch : nạp vào, tìm nạp vào, $row mảng với key fieldname Chúng ta phương pháp khác duyệt “tập record”, xem trang sau Hàm mysql_fetch_array Cú pháp: mysql_fetch_array(data [, array_type]); Array_type là: MySQL_Assoc : mảng kết hợp, key mảng field_name MySQL_Num : key mảng số MySQL_Both : hai khả trên, kiểu mặc định Vì không khai báo array_type, tức MySQL_Both, (1) có thể: while($row = mysql_fetch_array($result)){ echo $row[0] " " $row[1]; echo ""; } Tiếng Việt PHP - Phần không sử dụng CSDL MySQL, phải đảm bảo: Lưu tệp với mã UTF-8 (*) Khai báo phần head - Phần sử dụng CSDL MySQL, phải đảm bảo: Khai báo câu lệnh mysql_query(“SET NAMES ‘utf8’”) trước câu lệnh mysql_query($sql) với $sql câu lệnh Select Ví dụ: $sql = “Select … ”; mysql_query(“SET NAMES ‘utf8’”); (*) $result = mysql_query($sql); if(!$result) { echo “Record not found!”; } else { while($row = mysql_fetch_array($result)){ echo $row[‘firstField'] " " $row[‘secondField'].””;} Một Số Hàm Hữu Ích - Kiểm tra kết trả mysql_connect mysql_query: $con=mysql_connect(server, user, password) $rs =mysql_query($sql, $con) Cách 1: dùng if($con) hay if($rs) trả giá trị logic Cách 2: dùng if(is_resource($con)) hay if(is_resource($rs)) trả giá trị logic - Bản chất $rs trả nguồn liệu, recordset ADO Microsoft - Trong câu lệnh: while($row = mysql_fetch_array($rs)){ echo $row[‘FieldName'] Để kiểm tra $row dùng hàm is_array() - Để ngăn thông báo lỗi sử dụng mysql_connect, mysql_query cần sử dụng toán tử error: @ Phân Trang Dữ Liệu  Kỹ thuật dựa câu lệnh Select … limit start, total Mỗi trang hiển thị total records, reocord thứ start Record có thứ tự  Có nhiều phương pháp xây dựng link để điều khiển trang Pre Next Giả sử test.php trang PHP có chức hiển thị trang thứ $I với số record $PageSize, tùy theo $i mà xác định $start để xây dựng câu lệnh Select cho lựa chọn Phương pháp ưa thích lựa chọn sử dụng : $start : vị trí record bắt đầu trang $prev : vị trí bắt đầu cho trang liền trước trang (link PREV) $next : vị trí bắt đầu cho trang liền sau trang (link NEXT) Phân Trang Dữ Liệu (tt) Trong ứng dụng này, ta có module:  Connect.inc có chức kết nối đến CSDL, sử dụng hàm: mysql_connect() msql_select_db() Trong lập trình CSDL, module cần thiết kế tốt lưu file inc riêng, trang cần include vào  Init.inc có chức khởi tạo biến chung để điều khiển link  Test.php trang chính, có chức hiển thị nội dung trang với record $start đến ($start+$pagesize-1), bao gồm Connect.inc, Init.inc Link.inc  Link.inc có chức tạo liên kết dạng Prev Next Trong nhiều chương trình, LTV xây dựng hẵn Class để truy cập CSDL Sinh viên xem phần Bài đọc thêm PHP website giảng viên nội dung Phân Trang Dữ Liệu (tt) Tệp Connect.inc TệpPhân Init.inc Trang Dữ Liệu (tt) Phân Trang Dữ Liệu (tt) Tệp Test.php [...]... ($start+$pagesize-1), bao gồm Connect.inc, Init.inc và Link.inc  Link.inc có chức năng tạo ra các liên kết dạng Prev 1 2 3 4 Next Trong nhiều chương trình, LTV xây dựng hẵn một Class để truy cập CSDL Sinh viên xem trong phần Bài đọc thêm PHP trên website của giảng viên về nội dung này Phân Trang Dữ Liệu (tt) Tệp Connect.inc ... có chức tạo liên kết dạng Prev Next Trong nhiều chương trình, LTV xây dựng hẵn Class để truy cập CSDL Sinh viên xem phần Bài đọc thêm PHP website giảng viên nội dung Phân Trang Dữ Liệu (tt) Tệp... liệu - Sử dụng hàm die() cách hợp lý - Sử dụng transaction để điều khiển mạch chương trình Xem đọc thêm PHP trang web giảng viên e- Câu lệnh SQL: Select… $sql = “Select … ”; $result = mysql_query($sql);... {echo “Could’nt create database,” mysql_error();} Tuy nhiên, để đảm bảo field kiểu char liệu theo mã UTF-8 cần thay đổi câu lệnh SQL: $strSQL="CREATE DATABASE VD2”; $strSQL+= “DEFAULT CHARACTER

Ngày đăng: 03/12/2015, 01:44

TỪ KHÓA LIÊN QUAN