Tổng hợp các kiến thức PHPMySql từ cơ bản đến nâng cao, đối với PHP thì chúng ta có hai thư viện chính để xử lý database đó là thư viện MySQLi và PDO, mỗi thư viện có những ưu điểm và nhược điểm khác nhau nên tùy vào sở thích và độ lớn của project mà lựa chọn
Chương 01 PHP Căn Bản Phần 01 – Xin chào PHP ! Câu hỏi 1: PHP ? • PHP (Hypertext Preprocessor) ngơn ngữ lập trình mã nguồn mở thực thi máy chủ Câu hỏi 2: Tập tin PHP có phần mở rộng ? • Một tập tin PHP có phần mở rộng *.php, chứa văn bản, mã nguồn HTML, CSS, JavaScript, Jquery, … mã PHP Câu hỏi 3: PHP có khác so với HTML ? yêu cầu xem trang web gửi nội dung trang web yêu cầu xem trang web gửi nội dung trang web phát sinh trang web Câu hỏi 4: Server làm trang web PHP? • Server quan tâm đến mã nguồn PHP, chuyển mã nguồn PHP sang HTML gửi lại cho người dùng • Trang web PHP server phát sinh gửi đến client • Server PHP phải mạnh nhiều lần so với server HTML thông thường Câu hỏi 5: Tại nên sử dụng PHP để lập trình web ? • Chức năng: tạo website động, thao tác với file server, nhận gửi cookie, cập nhật database, hạn chế người dùng truy cập vào website, mã hóa liệu, … • Ưu điểm: thực thi tốt hệ điều hành, máy chủ phổ biến nay, kết hợp dễ dàng với hệ quản trị sở liệu, tài liệu phong phú đa dạng, cộng đồng sử dụng rộng rãi, cung cấp hoàn toàn miễn phí, … Câu hỏi 6: Có thể tạo webserver ảo máy tính cá nhân ? XAMPP 1.8.1 Một webserver ảo máy tính người dùng, kèm gói hỗ trợ Apache, Php, Mysql, PhpMyAdmin, … Câu hỏi 7: Phần mềm để soạn thảo mã nguồn PHP? Zend Studio 9.0.3 IDE mạnh cho lập trình viên PHP Phần 02 – Biến PHP KỸ THUẬT XỬ LÝ CHUỖI Chức STT Hàm strlen() mb_strlen() str_word_count() strtoupper($str) Chuyển đổi chữ thường thành chữ HOA strtolower($str) Chuyển đổi chữ HOA thành chữ thường ucfirst($str) Chuyển đổi ký tự đầu tiên chuỗi thành chữ hoa lcfirst($str) Chuyển đổi ký tự đầu tiên chuỗi thành chữ thường ucwords($str) Chuyển đổi tất ký tự từ chuỗi thành chữ in hoa stripos() Tìm kiếm số xuất từ chuỗi 10 strripos() Tìm kiếm số xuất cuối từ chuỗi 11 strrev() Đảo ngược chuỗi 12 substr() Trích xuất nội dung chuỗi 13 ltrim($str, $params) Xóa ký nằm bên trái chuỗi 14 rtrim($str, $params) Xóa ký nằm bên phải chuỗi 15 trim($str, $params) Xóa ký nằm bên phải bên trái chuỗi 16 implode ($str, $array) Chuyển giá trị mảng $array thành chuỗi bao gồm phần tử cách ký tự $str 17 explode ($delimiter, $str) Chuyển chuỗi thành mảng Tách chuỗi dựa vào $delimiter, đoàn tách thành phần tử mảng 18 str_repeat($str,n) 19 chr() Trả ký tự tương ứng với mã ASCII truyền vào 20 ord() Trả giá trị ASCII ký tự chuỗi 21 parse_str() Chuyển nội dung truy vấn vào biến mảng 22 parse_url() Truy xuất thành phần protocol, domain name, path, URL 23 strcmp($str1, $str2) 24 substr_compare ($str1, $str2, $start, $length) Lấy $length phần tử từ vị trí $start chuỗi $str1 say so sánh với chuỗi $str2 25 str_pad ($str, $length, $padString, $padType) Tăng độ dài chuỗi $str thành $length với ký tự thêm vào $pad_string (với chế thêm $padType) Lấy chiều dài chuỗi (tổng số ký tự có chuỗi) Lấy chiều dài chuỗi UTF-8 Đếm số từ có chuỗi Lặp lại chuỗi $str với số lần lặp n So sánh hai chuỗi $str1 $str2 với 26 str_shuffle() Sắp xếp ngẫu nhiên thứ tự ký tự chuỗi 27 str_replace ($find, $replace, $string) Tìm kiếm thay giá trị $find chuỗi $string giá trị $replace 28 substr_count ($string, $substring, $start, $length) Lấy $length phần tử từ vị trí $start chuỗi $str thống kê số lần xuất $substring chuỗi vừa lấy 29 str_split($str, $lenght) Cắt chuỗi thành phần tử mảng, phần tử có độ dài $length ký tự 30 addslashes($str) Thêm ký tự \ vào trước ký tự: nháy đơn ('), nháy đôi ("), gạch chéo (\) NULL 31 addcslashes($str, $character) Thêm ký tự \ vào trước ký tự $character 32 stripslashes ($str, $character) Hiển thị chuỗi khơng có ký tự gạch chéo tạo hàm addslashes 33 stripcslashes ($str, $character) Hiển thị chuỗi khơng có ký tự gạch chéo tạo hàm addcslashes 34 htmlspecialchars ($str) Chuyển đổi ký tự quy định trước & " ' < > sang giá trị HTML entities 35 htmlspecialchars_decode ($str) Chuyển đổi giá trị HTML entities gọi hàm htmlspecialchars ($str) giá trị ban đầu 36 htmlentities($str) 37 html_entity_decode($str) 38 get_html_translation_table() 39 strip_tags() Chuyển đổi ký tự sang giá trị HTML entities Chuyển đổi giá trị HTML entities gọi hàm htmlentities($str) giá trị ban đầu Xem danh sách giá trị HTML entities Loại bỏ thẻ HTML LÀM VIỆC VỚI NUMBER Chức STT Hàm is_numberic() Kiểm tra biến có lưu giá trị kiểu Number hay khơng is_int Kiểm tra biến có lưu giá trị kiểu Integer hay không is_float range($start, $length, $loop) round() ceil() Làm tròn đến số nguyên gần lớn floor() Làm tròn đến số nguyên gần nhỏ min() Lấy giá trị nhỏ số truyền vào max() Lấy giá trị lớn số truyền vào 10 rand(min, max) 11 number_format() 12 abs($number) 13 pow(x, y) 14 sqrt($number) Kiểm tra biến có lưu giá trị kiểu Float hay không Tạo dãy số với số bắt đầu số kết thúc cho trước Làm tròn đến số nguyên gần Lấy giá trị ngẫu nhiên trả nằm đoạn [min,max] Định dạng cách hiển thị phần nghìn số Trả vê giá trị tuyệt đối số Trả kết x mũ y Tính bậc hai $number XỬ LÝ THỜI GIAN Chức STT Hàm getdate() Lấy thời gian thiết lập máy chủ date_default_timezone_get() Trả kết múi thiết lập trước date_default_timezone_set time() mktime() date() checkdate(month, day, year) strtotime() Chuyển đổi chuỗi thời gian (ở định dạng English) giá trị timestamp date_parse_from_format($format, $date) Chuyển đổi chuỗi thời gian $date mảng thời gian theo định dạng $format Thiết lập múi Trả số giây từ thời điểm so với 01/01/1970 Trả số giây thời điểm so với 01/01/1970 Định dạng cách hiển thị thời gian Kiểm tra ngày hợp lệ Lưu Trường Hải Lân MySQL Database Server XỬ LÝ THỜI GIAN TRONG MYSQL Trong nội dung này, tập trung trình bày hàm xử lý thời gian, ngày, tháng, năm, … thao cộng trừ định dạng thời gian hệ quản trị sở liệu MySQL NOW() - Xác định thời gian thời điểm Đầu vào STT SELECT NOW(); SELECT NOW() + 0; Đầu 2011-12-26 19:50:24 20111226195113 CURDATE() - Xác định ngày, tháng, năm thời điểm Đầu vào STT Đầu 2011-12-26 SELECT CURDATE(); CURTIME() - Xác định giờ, phút, giây thời điểm Đầu vào STT Đầu 19:54:27 SELECT CURTIME(); DATE(expr) - Xác định ngày, tháng, năm thời điểm expr Đầu vào STT Đầu 2011-12-23 SELECT DATE('2011-12-23 09:22:03'); TIME(expr) - Xác định giờ, phút, giây thời điểm expr Đầu vào STT Đầu 09:22:03 SELECT TIME('2011-12-23 09:22:03'); YEAR(expr) - Xác định năm thời điểm expr Đầu vào STT Đầu SELECT YEAR('2011-12-23'); 2011 Trang Lưu Trường Hải Lân MySQL Database Server MONTH(expr) - Xác định tháng (chỉ số 1, 2, 3, …) thời điểm expr Đầu vào STT Đầu SELECT MONTH('2011-12-23'); 12 MONTHNAME(expr) - Xác định tên tháng thời điểm expr Đầu vào STT Đầu December SELECT MONTHNAME('2011-12-23'); WEEKDAY(expr) - Xác định số ngày tuần (0 = Monday, = Tuesday, … = Sunday) Đầu vào STT Đầu SELECT WEEKDAY('2011-12-23'); 10 WEEKOFYEAR(expr) - Xác định số tuần năm (kết nằm khoảng từ đến 55) Đầu vào STT Đầu 51 SELECT WEEKOFYEAR('2011-12-23'); 11 DAY(expr) - Xác định ngày (chỉ số) thời điểm expr Đầu vào STT Đầu 23 SELECT DAY('2011-12-23'); 12 DAYOFYEAR(expr) - Xác định số thứ tự ngày năm thời điểm expr (kết nằm khoảng từ đến 366) Đầu vào STT Đầu 357 SELECT DAYOFYEAR('2011-12-23'); 13 DAYOFMONTH(expr) STT Xác định số thứ tự ngày tháng thời điểm expr (kết nằm khoảng từ đến 31) Đầu vào Đầu SELECT DAYOFMONTH('2011-12-23'); 23 Trang Lưu Trường Hải Lân MySQL Database Server 14 DAYNAME(expr) - Xác định tên (thứ) ngày thời điểm expr Đầu vào STT Đầu SELECT DAYNAME('2011-12-23'); Friday 15 DAYOFWEEK(expr) - Xác định ngày (chỉ số) ngày thời điểm expr (1 = Sunday, = Monday, …, = Saturday) Đầu vào STT Đầu SELECT DAYOFWEEK('2011-12-23'); 16 HOUR(expr) - Xác định thời điểm expr Đầu vào STT Đầu SELECT HOUR('2011-12-23 09:22:03'); 17 MINUTE(expr) - Xác định phút thời điểm expr Đầu vào STT Đầu SELECT MINUTE('2011-12-23 09:22:03'); 22 18 SECOND(expr) - Xác định giây thời điểm expr Đầu vào STT Đầu SELECT SECOND('2011-12-23 09:22:03'); 19 MICROSECOND(expr) - Xác định mili giây thời điểm expr Đầu vào STT Đầu SELECT MICROSECOND('12:00:00.123456'); 123456 20 TIME_TO_SEC(expr) STT Chuyển thời gian thời điểm expr số giây Đầu vào Đầu SELECT TIME_TO_SEC('22:23:00'); 80580 Trang Lưu Trường Hải Lân MySQL Database Server 21 FROM_DAYS(N) - Chuyển định dạng thời gian giá trị số N Đầu vào STT Đầu SELECT FROM_DAYS(730669); 2000-07-03 22 LAST_DAY(expr) - Xác định ngày cuối tháng tháng thời điểm expr Đầu vào STT Đầu SELECT LAST_DAY('2011-12-23 09:22:03'); 2011-12-31 23 ADDDATE(date, INTERVAL expr unit) - Cộng vào thời điểm date giá trị expr thuộc dạng unit Đầu vào STT Đầu SELECT ADDDATE('2006-05-12',INTERVAL DAY); 2006-05-13 SELECT ADDDATE('2006-05-12',INTERVAL MONTH); 2007-01-12 Bảng định dạng kiểu thuộc tính expr unit unit expr MICROSECOND MICROSECONDS SECOND SECONDS MINUTE MINUTES HOUR HOURS DAY DAYS WEEK WEEKS MONTH MONTHS QUARTER QUARTERS YEAR YEARS SECOND_MICROSECOND 'SECONDS.MICROSECONDS' MINUTE_MICROSECOND 'MINUTES:SECONDS.MICROSECONDS' MINUTE_SECOND 'MINUTES:SECONDS' HOUR_MICROSECOND 'HOURS:MINUTES:SECONDS.MICROSECONDS' HOUR_SECOND 'HOURS:MINUTES:SECONDS' HOUR_MINUTE 'HOURS:MINUTES' DAY_MICROSECOND 'DAYS HOURS:MINUTES:SECONDS.MICROSECONDS' DAY_SECOND 'DAYS HOURS:MINUTES:SECONDS' DAY_MINUTE 'DAYS HOURS:MINUTES' DAY_HOUR 'DAYS HOURS' YEAR_MONTH 'YEARS-MONTHS' Trang Lưu Trường Hải Lân MySQL Database Server 24 DATE_ADD(date, INTERVAL expr unit) - Cộng vào thời điểm date giá trị expr thuộc dạng unit Đầu vào STT Đầu SELECT DATE_ADD('2006-05-12',INTERVAL MONTH); 2006-06-12 25 DATEDIFF(expr1,expr2) - Tính số ngày hai khoảng thời gian cụ thể (chỉ phần ngày, tháng, năm hai khoảng thời gian tính tốn) Đầu vào STT Đầu SELECT DATEDIFF('2011-12-30', '2011-12-23 09:22:03'); 26 SUBDATE(date, INTERVAL expr unit) - Trừ vào thời điểm date giá trị expr thuộc dạng unit Đầu vào STT Đầu SELECT SUBDATE('2006-05-12',INTERVAL DAY); 2006-05-11 27 DATE_SUB(date, INTERVAL expr unit) - Trừ vào thời điểm date giá trị expr thuộc dạng unit Đầu vào STT Đầu SELECT DATE_SUB ('2006-05-12',INTERVAL MONTH); 2006-04-12 28 SUBTIME(expr1,expr2) - Xác định hiệu expr1 expr2, giá trị kết có định dạng expr1 Đầu vào STT Đầu SELECT SUBTIME('2007-12-31 23:59:59.999999','1 1:1:1.000002'); 2007-12-30 22:58:58.999997 29 EXTRACT(unit FROM date) - Xác định xác thành phần unit thời điểm date Đầu vào STT Đầu SELECT EXTRACT(YEAR FROM '2011-12-23'); SELECT EXTRACT(YEAR_MONTH FROM '2011-12-23 01:02:03'); 30 DATE_FORMAT(date,format) - Địng dạng thời gian thời điểm date với kiểu định dạng format Trang 2011 201112 Lưu Trường Hải Lân MySQL Database Server Bảng ký hiệu định dạng: Ý nghĩa Ký hiệu STT %a Tên viết tắt ngày tuần (Sun, …, Sat ) %b Tên viết tắt tháng năm (Jan, …, Dec ) %c Tháng (0,1, …, 12) %D Thứ tự ngày tháng (0th, 1st, 2nd, …) %d Thứ tự ngày tháng (00, 01, …, 31) %e Thứ tự ngày tháng (0, 1, …, 31) %f Microseconds (000000 999999) %H Giờ (00 23) %h Giờ (01 12) %I Giờ (01 12) %i Phút (00 59) %j Số thứ tự ngày năm (001 366) %k Giờ (0 23) %l Giờ (1 12) %M Tên tháng (January December) %m Tháng (00 12) %p AM PM %r Giờ (00 12) (hh:mm:ss theo sau AM PM) %S Giây (00 59) %s Giây (00 59) %T Giờ (00 23) (hh:mm:ss) %U Số thứ tự tuần năm (00 53), chủ nhật ngày tuần %u Số thứ tự tuần năm (00 53), thứ hai ngày tuần %w Số thứ tự ngày tuần (0=Sunday 6=Saturday) Đầu vào Đầu SELECT DATE_FORMAT('2009-10-04 22:23:00', '%W %M %Y'); SELECT DATE_FORMAT('2007-10-04 22:23:00', '%H:%i:%s'); '22:23:00' SELECT DATE_FORMAT('1999-01-01', '%X %V'); '1998 52' SELECT DATE_FORMAT('2006-06-01', '%d'); Trang 'Sunday October 2009' '01' Lưu Trường Hải Lân MySQL Database Server 31 GET_FORMAT({DATE|TIME|DATETIME}, {'EUR'|'USA'|'JIS'|'ISO'|'INTERNAL'}) - Xác định định dạng thời gian theo vùng Hàm thường đường sử dụng kết hợp với hàm DATE_FORMAT STT Đầu vào Đầu SELECT DATE_FORMAT('2003-10-03',GET_FORMAT(DATE,'EUR')); 03.10.2003 SELECT STR_TO_DATE('10.31.2003', GET_FORMAT(DATE,'USA')); 2003-10-31 Trang Lưu Trường Hải Lân MySQL Database Server XỬ LÝ CHUỖI TRONG MYSQL Trong nội dung này, tập trung trình bày hàm xử lý chuỗi, thao tác tìm kiếm chuỗi kết hợp với việc sử dụng biểu thức quy hệ quản trị sở liệu MySQL A CÁC HÀM XỬ LÝ CHUỖI CƠ BẢN: LENGTH (str): - Xác định chiều dài chuỗi str Đầu vào STT Đầu SELECT LENGTH ('MySQL is easy'); 13 CONCAT (str1, str2, …, strn) - Nối chuỗi str1, str2, …, strn thành chuỗi Đầu vào STT Đầu SELECT CONCAT ('MySQL', ' is', ' easy'); MySQL is easy SELECT CONCAT ('MySQL', ' is', NULL, ' easy'); NULL FORMAT (str, n) - Chuyển đổi định dạng chuỗi str theo dạng #,###,###.##, làm tròn đến n số thập phân Đầu vào STT Đầu SELECT FORMAT (12345.678901, 4); 12,345.6789 SELECT FORMAT (12345.54321, 0); 12,346 INSERT (str, pos, len, newstr) - Thay ký tự chuỗi str từ vị trí thứ pos đến vị trí thứ pos+len-1 chuỗi ký tự newstr Đầu vào STT Đầu SELECT INSERT ('MySQL is easy', 3, 3, 'Library'); MyLibrary is easy SELECT INSERT ('MySQL is easy', 3, 100, 'Library'); MyLibrary INSTR (str, substr) - Trả vị trí xuất chuỗi substr chuỗi str Đầu vào STT Đầu SELECT INSTR ('MySQL', 'SQL'); SELECT INSTR ('MySQL', 'Server'); Trang Lưu Trường Hải Lân MySQL Database Server LEFT (str, len) - Trả chuỗi ký tự tính từ vị trí bên trái chuỗi str từ vị trí thứ đến vị trí thứ len Đầu vào STT Đầu SELECT LEFT ('MySQL is easy', 5); MySQL RIGHT (str, len) - Trả chuỗi ký tự tính từ vị trí bên phải chuỗi str từ vị trí thứ đến vị trí thứ len Đầu vào STT Đầu SELECT RIGHT ('MySQL is easy', 7); is easy LOCATE (substr, str, pos) - Trả vị trí xuất chuỗi substr chuỗi str tính từ vị trí thứ pos Đầu vào STT Đầu SELECT LOCATE ('very', 'MySQL is very very easy'); 10 SELECT LOCATE ('very', 'MySQL is very very easy', 11); 15 LOWER (str) - Chuyển đổi chuỗi str thành chữ thường Đầu vào STT Đầu SELECT LOWER ('MySQL is easy'); mysql is easy 10 UPPER (str) - Chuyển đổi chuỗi str thành chữ hoa Đầu vào STT Đầu SELECT UPPER ('MySQL is easy'); MYSQL IS EASY 11 LTRIM (str) - Loại bỏ tất khoảng trắng bên trái chuỗi str Đầu vào STT SELECT LTRIM(' Đầu MySQL is easy'); MySQL is easy 12 RTRIM (str) - Loại bỏ tất khoảng trắng bên phải chuỗi str STT SELECT RTRIM('MySQL is easy Đầu vào Đầu '); MySQL is easy Trang Lưu Trường Hải Lân MySQL Database Server 13 REPLACE (str, from_str, to_str) - Thay ký tự from_str chuỗi str ký tự to_str Đầu vào STT Đầu SELECT REPLACE ('MySQL is easy', 'MySQL', 'PHP'); PHP is easy 14 REVERSE (str) - Đảo ngược chuỗi str Đầu vào STT Đầu SELECT REPLACE ('MySQL is easy', 'MySQL', 'PHP'); PHP is easy 15 SUBSTRING (str FROM pos FOR len) - Trích lọc từ chuỗi str chuỗi mới, chuỗi có ký tự vị trí pos (tính từ vị trí biên trái) vị trí pos+len-1 Đầu vào STT Đầu SELECT SUBSTRING('MySQL is easy' FROM FOR 10); L is easy SELECT SUBSTRING('MySQL is easy' FROM -4 FOR 2); ea 16 TRIM ([{BOTH | LEADING | TRAILING} [remstr] FROM] str), TRIM([remstr FROM] str) - Trả chuỗi str với ký tự remstr bị loại bỏ, theo tiêu chí LEADING (bên trái), TRAILING (bên phải) BOTH (cả hai vị trí bên trái bên phải) Đầu vào STT Đầu SELECT TRIM (' MySQL is easy '); MySQL is easy MySQL is easy SELECT TRIM (LEADING '-' FROM ' -MySQL is easy -'); MySQL is easy - SELECT TRIM (TRAILING '-' FROM ' -MySQL is easy -'); -MySQL is easy SELECT TRIM (BOTH '-' FROM ' -MySQL is easy -'); MySQL is easy B KẾT HỢP BIỂU THỨC CHÍNH QUY: - Biểu thức quy sử dụng thường xuyên phương pháp tương đối hiệu cho công việc tìm kiếm phức tạp - Sử dụng biểu thức quy MySQL chi thành nhóm từ khóa sau: o NOT_REGEXP o REGEXP o RLIKE - Trong nội dung trình bày việc sử dụng biểu thức quy với từ khóa REGEXP Kết tìm kiếm trả tìm thấy trả khơng tìm thấy Trang Lưu Trường Hải Lân MySQL Database Server Ví dụ TT Ký hiệu ^ Tìm từ đầu chuỗi nguồn SELECT 'MySQL is easy' REGEXP '^MyN'; $ Tìm từ cuối chuỗi nguồn SELECT 'MySQL is easy' REGEXP 'easy$'; Đại diện ký tự SELECT 'MySQL' REGEXP '^M.SQL$'; * Ký tự xuất nhiều lần SELECT 'MyyySQL' REGEXP '^M.*SQL$'; + Ký tự xuất nhiều lần SELECT 'MSQL' REGEXP '^M.+SQL$'; ? Ký tự xuất lần SELECT 'MyyySQL' REGEXP '^M.?SQL$'; | Sự lựa chọn (hoặc) SELECT 'My' REGEXP '^(My|Me)$'; SELECT 'abcde' REGEXP 'a[bcd]{1,10}e'; Diễn giải Số lần xuất ký tự (a* tương {n.m} đương a{0}; a+ tương đương a{1}; a? tương đương a{0,1}) Đầu vào Trang Đầu ... Server làm trang web PHP? • Server quan tâm đến mã nguồn PHP, chuyển mã nguồn PHP sang HTML gửi lại cho người dùng • Trang web PHP server phát sinh gửi đến client • Server PHP phải mạnh nhiều... chào PHP ! Câu hỏi 1: PHP ? • PHP (Hypertext Preprocessor) ngơn ngữ lập trình mã nguồn mở thực thi máy chủ Câu hỏi 2: Tập tin PHP có phần mở rộng ? • Một tập tin PHP có phần mở rộng * .php, chứa... dùng, kèm gói hỗ trợ Apache, Php, Mysql, PhpMyAdmin, … Câu hỏi 7: Phần mềm để soạn thảo mã nguồn PHP? Zend Studio 9.0.3 IDE mạnh cho lập trình viên PHP Phần 02 – Biến PHP Câu hỏi 1: Biến ? • Biến