NTM Solutions

Facebook Youtube Google+

Chủ Nhật, 14 tháng 10, 2018

MYSQL – Bài 04 – Thêm dữ liệu


XEM MỤC LỤC CÁC BÀI VIẾT PHP


Thêm dữ liệu vào MySQL dùng MySQLi và PDO


Sau khi tạo xong cơ sở dữ liệu và bảng , chúng ta tiến hành thêm dữ liệu vào cho chúng.

Đây là 01 vài quy tắc cú pháp phải tuân theo:

·         Câu truy vấn SQL phải nằm trong cặp dấu ngoặc khi viết trong PHP.

·         Giá trị chuỗi bên trong câu truy vấn SQL phải nằm trong cặp dấu ngoặc đơn.

·         Giá trị số không nằm trong cặp dấu ngoặc.

·         Từ NULL không nằm trong cặp dấu ngoặc.

Câu lệnh INSERT INTO dùng để thêm mới các bảng ghi vào 01 bảng MySQL cú pháp như sau:

INSERT INTO tên_bảng (cột1, cột2, cột3,...)
VALUES (giá_trị1, giá_trị2, giá_trị3,...)

Để học sâu về câu lệnh SQL, các bạn vào đây SQL tutorial.

Trong bài trước chúng ta tạo 01 bảng rỗng có tên "MyGuests" có 05 cột: "id", "firstname", "lastname", "email" và "reg_date". Bây giờ, chúng ta sẽ điền dữ liệu vào bảng.

Ghi chú: Nếu 01 cột được thiết lập là AUTO_INCREMENT (Ví dụ như cột "id") hoặc TIMESTAMP (Ví dụ như cột "reg_date"), MySQL sẽ tự động thêm giá trị vào.

Các ví dụ sau thêm 01 bảng ghi mới vào bảng "MyGuests"


Ví dụ (MySQLi hướng đối tượng)


<?php
$servername = "localhost";
$username = 
"root";
$password = 
"";
$dbname = 
"myDB";

// Tạo kết nối
$conn = new mysqli($servername, $username, $password, $dbname);
// Kiểm tra kết nối
if ($conn->connect_error) {
  
die("Lỗi kết nối: " . $conn->connect_error);
}

$sql = 
"INSERT INTO MyGuests (firstname, lastname, email)
VALUES ('Dr', 'M', 'ntm@lophocvitinh.com')"
;

if ($conn->query($sql) === TRUE) {
    
echo "Tạo mới bảng ghi thành công!";
else {
    
echo "Lỗi: " . $sql . "<br>" . $conn->error;
}

$conn->close();
?>

Ví dụ (MySQLi thủ tục)


<?php
$servername = "localhost";
$username = 
"root";
$password = 
"";
$dbname = 
"myDB";

// Tạo kết nối
$conn = mysqli_connect($servername, $username, $password, $dbname);
// Kiểm tra kết nối
 if (!$conn) {
     
die("Lỗi kết nối: " . mysqli_connect_error());
}

mysqli_query($conn, "SET character_set_client=utf8");

mysqli_query($conn, "SET character_set_connection=utf8");
$sql = "INSERT INTO MyGuests (firstname, lastname, email)
VALUES ('Lớp học', 'Vi Tính', 'ntm@lophocvitinh.com')"
;

if (mysqli_query($conn, $sql)) {
    
echo "Tạo mới bảng ghi thành công!";
else {
    
echo "Lỗi: " . $sql . "<br>" . mysqli_error($conn);
}

mysqli_close($conn);
?>

Ví dụ (PDO)


<?php
$servername = "localhost";
$username = 
"root";
$password = 
"";
$dbname = 
"myDBPDO";

try {
    $conn = 
new PDO("mysql:host=$servername;dbname=$dbname", $username, $password);
    $conn->
exec("SET NAMES 'utf8';");

    // thiết lập chế độ PDO bắt lỗi bằng ngoại lệ
    $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    $sql = 
"INSERT INTO MyGuests (firstname, lastname, email)
    VALUES ('Lớp học', 'Anh Văn', 'ntm@lophocvitinh.com')"
;
     
// dùng hàm exec() vì không có kết quả trả về
    $conn->exec($sql);
    
echo "Tạo mới bảng ghi thành công!";
    }
catch(PDOException $e)
    {
    
echo $sql . "<br>" . $e->getMessage();
    }

$conn = null;
?>

Các bạn có thể dùng đoạn mã sau để xem những gì đã thêm vào trong cơ sở dữ liệu( ta sẽ học về câu lệnh SELECT trong các bài sau)

<?php
$servername = "localhost";
$username = 
"root";
$password = 
"";
$dbname = 
"myDB";

// Tạo kết nối
$conn = new mysqli($servername, $username, $password, $dbname);
// Kiểm tra kết nối
if ($conn->connect_error) {
    
die("Lỗi kết nối: " . $conn->connect_error);

$conn->
query("SET character_set_results=utf8");

$sql = "SELECT id, firstname, lastname FROM MyGuests";
$result = $conn->query($sql);

if ($result->num_rows > 0) {
    
// xuất dữ liệu ra từng dòng
    while($row = $result->fetch_assoc()) {
        
echo "id: " . $row["id"]. " - Name: " . $row["firstname"]. " " . $row["lastname"]. "<br>";
    }
else {
    
echo "0 bản ghi";
}
 $conn->close();
?>

Ghi chú: để những phần Tiếng Việt trong cơ sở dữ liệu mySQL hiển thị đúng (cả trên trình duyệt web và phpmyadmin) thì 02 chỗ này phải đồng bộ (thiết lập giống nhau)

·         Phần mã PHP khi thêm dữ liệu vào hay khi hiển thị, tìm kiếm

·         Thiết lập trên phpmyadmin

Theo mình tốt nhất là cả 02 chỗ đều thiết lập là utf8



Mã PHP là:

1.Khi thêm vào:

"SET character_set_client=utf8"

"SET character_set_connection=utf8"

2.Khi hiển thị ra hay tìm kiếm

"SET character_set_results=utf8"

·         Hướng đối tượng:

$conn->query("SET character_set_client=utf8");

$conn->query("SET character_set_connection=utf8");

$conn->query("SET character_set_results=utf8");

·         Hướng thủ tục:

mysqli_query($conn, "SET character_set_client=utf8");

mysqli_query($conn, "SET character_set_connection=utf8");

mysqli_query($conn, "SET character_set_results=utf8");



·         PDO: chèn dòng mã sau khi tạo mới đối tượng PDO

 $conn->exec("SET NAMES 'utf8';");


Nếu vẫn chưa rõ các bạn xem them video clip sau:


XEM MỤC LỤC CÁC BÀI VIẾT PHP


By #tiensim

Nguồn: sưu tầm