---
# System prepended metadata

title: PHP

---

# 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");
?>
```
