# PHP - PHP là từ viết tắt của "Hypertext Preprocessor" - Một số phương thức: - PHP `$_POST` là một Superglobals PHP được sử dụng để thu thập dữ liệu biểu mẫu sau khi gửi biểu mẫu HTML bằng phương thức = "post". - PHP `$_GET` là một Superglobals PHP được sử dụng để thu thập dữ liệu biểu mẫu sau khi gửi biểu mẫu HTML bằng phương thức = "get". `$_GET` cũng có thể thu thập dữ liệu được gửi trong URL. - PHP `$_REQUEST` là một Superglobals PHP được sử dụng để thu thập dữ liệu sau khi gửi biểu mẫu HTML. # MYSQL ## Giới thiệu chung về SQL - **SQL** là ngôn ngữ tiêu chuẩn để lưu trữ, thao tác và truy xuất dữ liệu trong cơ sở dữ liệu. - Câu lệnh SQL bao gồm các từ khóa dễ hiểu. Ví dụ: ```sql SELECT * FROM Customers; /*Chọn tất cả các bản ghi từ bảng Khách hàng*/ ``` Từ khóa SQL KHÔNG phân biệt chữ hoa chữ thường: `select` giống như `SELECT` - Một số lệnh **SQL** quan trọng: - `SELECT`- trích xuất dữ liệu từ cơ sở dữ liệu - `UPDATE`- cập nhật dữ liệu vào cơ sở dữ liệu - `DELETE`- xóa dữ liệu khỏi cơ sở dữ liệu - `INSERT INTO`- chèn dữ liệu mới vào cơ sở dữ liệu - `CREATE DATABASE`- tạo cơ sở dữ liệu mới - `ALTER DATABASE`- sửa đổi cơ sở dữ liệu - `CREATE TABLE`- tạo một bảng mới - `ALTER TABLE`- sửa đổi một bảng - `DROP TABLE`- xóa một bảng - `CREATE INDEX`- tạo chỉ mục (khóa tìm kiếm) - `DROP INDEX`- xóa một chỉ mục ### MYSQL - **MySQL** là hệ thống cơ sở dữ liệu phổ biến nhất được sử dụng với PHP. MySQL sử dụng SQL tiêu chuẩn. # CRUD bằng PDO ## Tạo bảng chứa Database Có thể tạo trực tiếp trên `phpMyAdmin` hoặc dùng câu lệnh trên `SQL` ```sql CREATE TABLE `monhoc` ( `id` int(11) NOT NULL AUTO_INCREMENT, `ten` varchar(50) COLLATE utf8_unicode_ci NOT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET =utf8 COLLATE=utf8_unicode_ci; ``` ![](https://hackmd.io/_uploads/Bk9xeUeWp.png) ## Tạo file kết nối `connect.php` ```php <?php //thông tin kết nối const HOST = 'localhost'; const USER = 'root'; const DB = 'subject_1'; const PASS = ''; try{ if(class_exists('PDO')){ //kiểm tra PDO $dsn = 'mysql:dbname='.DB.';host='.HOST; $conn = new PDO($dsn, USER, PASS); $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);//dặt chế độ lỗi thành ngoại lệ var_dump($conn); } } catch(Exception $exception){ echo $exception -> getMessage().'<br>'; die(); } ?> ``` ## Tạo file hiển thị `index.php` ```php <?php require_once "connect.php"; $sql = "SELECT m.*, ten FROM monhoc m"; //lấy tên môn học từ bảng monhoc $stmt = $conn->prepare($sql); $stmt->execute(); $monhoc = $stmt->fetchAll(PDO::FETCH_ASSOC);//lấy dữ liệu ?> <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Document</title> </head> <body> <table border="2"> <tr> <th>STT</th> <th>MÔN HỌC</th> </tr> <?php foreach($monhoc as $m) : ?> <tr> <td><?= $m['id']?></td> <td><?= $m['ten']?></td> <td> <a href="edit.php">Sửa</a> </td> <td> <a onclick="return confirm('Bạn có chắc chắn xóa không?')" href="delete.php">Xóa</a> </td> <?php endforeach ?> </table> <a href="insert.php">Thêm môn học</a> </body> </html> ``` ![](https://hackmd.io/_uploads/HkNDY_xZ6.png) ## Thêm dữ liệu `insert.php` ```php <?php require_once "connect.php"; $ten = $id =""; //Xác định biến và khởi tạo giá trị trống if($_SERVER['REQUEST_METHOD'] == "POST"){ $ten = $_POST['ten']; $sql = "INSERT INTO monhoc(ten) VALUES (:ten)"; $stmt = $conn -> prepare($sql); $stmt -> bindParam('ten', $ten); //gán giá trị $insertState = $stmt -> execute(); header("location: index.php"); exit; } $sql = "SELECT *, ten FROM monhoc "; //lấy tên môn học từ bảng monhoc $stmt = $conn->prepare($sql); $stmt->execute(); $monhoc1 = $stmt->fetchAll(PDO::FETCH_ASSOC);//lấy dữ liệu ?> <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Document</title> </head> <body> <form action="" method='POST' enctype="multipart/form-data"> Subject: <td><input type="text" name="ten" id=""></td> <button type='submit'>Create</button><br><br> <?php foreach($monhoc1 as $monhoc): ?> <option value="<?= $monhoc['ten']?>"> </option> <?php endforeach ?> <a href="index.php">Danh Sách Môn Học</a> </form> </body> </html> ``` ![](https://hackmd.io/_uploads/SyUdrcxb6.png) Ta được: ![](https://hackmd.io/_uploads/SyBvLcxbT.png) ## Sửa dữ liệu `edit.php` ```php <?php require_once "connect.php"; if ($_SERVER['REQUEST_METHOD'] == "POST") { $ten = $_POST['ten']; $id = $_GET['id']; // Update $sql = "UPDATE monhoc SET ten='$ten' WHERE id = $id"; $stmt = $conn->prepare($sql); $stmt->execute(); header("location: index.php"); die; } $sql = "SELECT id, ten FROM monhoc m"; // Chuẩn bị $stmt = $conn->prepare($sql); // Thực thi $stmt->execute(); // Lấy dữ liệu $monhoc = $stmt->fetchAll(PDO::FETCH_ASSOC); // Lấy subject_id trên thanh URL $id = $_GET['id']; // Câu lệnh SQL với điều kiện subject_id $sql = "SELECT * FROM monhoc WHERE id = $id"; $stmt = $conn->prepare($sql); $stmt->execute(); $monhoc = $stmt->fetchAll(PDO::FETCH_ASSOC); ?> <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Cập nhật tên môn học</title> </head> <body> <form action="" method="POST" enctype="multipart/form-data"> <input type="hidden" name="id" value="<?= $monhoc[$id]?>"> Subject: <input type="text" name="subject_name" id=""> <br><br> <button type="submit">Cập nhật</button> <a href="index.php">Danh sách danh sách</a> </form> </body> </html> ``` ## Xóa dữ liệu `delete.php` ```php <?php require_once "connect.php"; $id = $_GET['id']; $sql = "DELETE FROM monhoc WHERE id = :id"; $stmt = $conn -> prepare($sql); $stmt -> bindParam('id', $id); $deleteState = $stmt -> execute(); header("location: index.php"); ?> ```