NTM Solutions

Facebook Youtube Google+

Thứ Tư, 10 tháng 10, 2018

MYSQL – Bài 01 – PHP kết nối đến MySQL

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


PHP 5 và các phiên bản sau này có thể làm việc với cơ sở dữ liệu MySQL qua 02 phương thức sau:

·         Phần mở rộng MySQLi (chữ "i" là viết tắt của chữ cải thiện - improved)

·         PDO (các đối tượng dữ liệu PHP)

Các phiên bản cũ (trước PHP5) dùng phần mở rộng MySQL . Tuy nhiên, phần mở rộng này đã ngưng sử dụng từ năm 2012.

Nên dùng MySQLi hay PDO?


Câu trả lời là "Thích gì dùng nấy".

Cả MySQLi và PDO có những ưu điểm riêng:

PDO có thể dùng với hơn 12 hệ cơ sở dữ liệu, trong khi MySQLi chỉ dùng với cơ sở dữ liệu MySQL.

Vì vậy, nếu bạn phải với PDO ta có thể chuyển đổi qua hệ cơ sở dữ liệu khác dễ dàng với việc thay đổi connection string và vài câu truy vấn. Với MySQLi, bạn phải viết lại hầu như toàn bộ mã các câu truy vấn đi kèm.

Cả 02 đều viết theo kiểu hướng đối tượng , nhưng MySQLi luôn yêu cầu phải có 01 procedural API.

Cả 02 hỗ trợ các câu lệnh cài đặt sẵn - Prepared Statements. Các câu lệnh này giúp tránh khỏi SQL injection, và chúng rất quan trọng trong việc bảo mật ứng dụng web.

Các ví dụ MySQL theo cú pháp của MySQLi và PDO

Từ đây trở về sau , chúng ta sẽ minh họa cả 03 cách thao tác trong các đoạn mã ví dụ:

·         MySQLi (hướng đối tượng)

·         MySQLi (thủ tục)

·         PDO

Cài đặt MySQLi


Dành cho Linux và Windows: phần mở rộng MySQLi được tự động cài đặt trong hầu hết các trường hợp , trong php5 gói mysql được cài sẵn.

Liên kết hướng dẫn cài đặt: http://php.net/manual/en/mysqli.installation.php

Cài đặt PDO

Liên kết hướng dẫn cài đặt: http://php.net/manual/en/pdo.installation.php

Mở 01 kết nối đến MySQL

Trước khi chúng ta có thể truy cập dữ liệu của MySQL, chúng ta phải kết nối được đến máy chủ:

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


<?php
$servername = 
"localhost";
$username = 
"root"; //sửa user name và pass máy chủ web của bạn
$password = 
"";

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

echo "Kết nối thành công!";
?>

PHP là 01 ngôn ngữ tuyệt vời và thông dụng!

Các bạn chú ý ví dụ hướng đối tượng ở trên: dòng $connect_error sẽ bị lỗi nếu phiên bản PHP cũ. Để đảm bảo tương thích nhiều phiên bản PHP ta sẽ thay thế bằng đoạn mã sau:
// Kiểm tra kết nối
if (mysqli_connect_error()) {
    die(" Kết nối cơ sở dữ liệu thất bại!: " . mysqli_connect_error());
}

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


<?php

$servername = "localhost";

$username = "root";

$password = "";

// Tạo kết nối

$conn = mysqli_connect($servername, $username, $password);

// Kiểm tra kết nối

if (!$conn) {

die("Kết nối thất bại!: " . mysqli_connect_error());

}

echo " Kết nối thành công! ";

?>

Ví dụ (PDO)


<?php

$servername = "localhost";

$username = "root";

$password = "";

try {

    $conn = new PDO("mysql:host=$servername;dbname=myDB", $username, $password);

    // set the PDO error mode to exception

    $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

    echo "Kết nối thành công3!";

    }

catch(PDOException $e)

    {

    echo "Kết nối thất bại!: " . $e->getMessage();

    }

?>

Trước khi làm các ví dụ này các bạn vào phpmyadmin-> Tạo 01 cơ sở dữ liệu tên là mydb (cách sử dụng phpMyADMIN các bạn vào đây)

Riêng PDO đòi hỏi khi kết nối phải chỉ rõ 01 cơ sở dữ liệu.

Mẹo: 01 lợi thế tuyệt vời của PDO là có 01 lớp ngoại lệ (exception class) dùng xử lý bất kỳ vấn đề có thể phát sinh khi truy vấn cơ sở dữ liệu. Nếu 01 ngoại lệ phát sinh bên trong khối try{ } , đoạn mã sẽ dừng thực thi và chuyển ngay đến thực thi khối catch(){ } trước tiên.

Đóng kết nối


Kết nối sẽ tự động đóng khi hết đoạn mã. Để đóng kết nối trước , ta sử dụng đoạn mã sau:

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


$conn->close();

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


mysqli_close($conn);

Ví dụ (PDO)


$conn = null;

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