Với PHP, bạn có thể dễ dàng kết nối và thao tác với cơ sở dữ liệu.
MySQL là hệ thống cơ sở dữ liệu phổ biến nhất được sử dụng với PHP.
Dữ liệu trong cơ sở dữ liệu MySQL được lưu trữ trong các bảng. Bảng là tập hợp các dữ liệu liên quan và nó bao gồm các cột và hàng.
Cơ sở dữ liệu rất hữu ích để lưu trữ thông tin theo loại. Ví dụ: một cửa hàng có thể có một cơ sở dữ liệu với các bảng sau:
PHP 5 trở lên có thể thao tác với cơ sở dữ liệu MySQL bằng cách sử dụng:
Lưu ý: Các phiên bản trước đây của PHP sử dụng phần mở rộng MySQL để thao tác với cơ sở dữ liệu MySQL. Tuy nhiên, phần mở rộng MySQL này đã lỗi thời từ năm 2012.
Nếu bạn cần một câu trả lời ngắn, đó sẽ là "làm bất cứ điều gì bạn thích".
Cả MySQLi và PDO đều có những ưu điểm của chúng:
PDO sẽ hoạt động trên 12 hệ thống cơ sở dữ liệu khác nhau, trong khi MySQLi sẽ chỉ hoạt động với cơ sở dữ liệu MySQL.
Vì vậy, nếu bạn phải chuyển dự án của mình sang sử dụng cơ sở dữ liệu khác, PDO sẽ giúp quá trình này trở nên dễ dàng. Bạn chỉ phải thay đổi chuỗi kết nối và một vài truy vấn. Với MySQLi, bạn sẽ cần viết lại toàn bộ mã - bao gồm các truy vấn.
Cả hai đều hướng đối tượng, nhưng MySQLi cũng cung cấp API thủ tục.
Cả hai đều hỗ trợ Prepared Statements. Prepared Statements bảo vệ khỏi SQL injection và rất quan trọng đối với bảo mật ứng dụng web.
Đối với Linux và Windows: Phần mở rộng MySQLi được cài đặt tự động trong hầu hết các trường hợp, khi gói php5 mysql được cài đặt.
Để biết chi tiết cài đặt, hãy truy cập: http://php.net/manual/en/mysqli.installation.php
Để biết chi tiết cài đặt, hãy truy cập: http://php.net/manual/en/pdo.installation.php
Trước khi chúng tôi có thể truy cập dữ liệu trong cơ sở dữ liệu MySQL, chúng tôi cần có khả năng kết nối với máy chủ:
<?php
$servername = "localhost";
$username = "username";
$password = "password";
// Create connection
$conn = new mysqli($servername, $username, $password);
// Check connection
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
echo "Connected successfully";
?>
<?php
$servername = "localhost";
$username = "username";
$password = "password";
// Create connection
$conn = mysqli_connect($servername, $username, $password);
// Check connection
if (!$conn) {
die("Connection failed: " . mysqli_connect_error());
}
echo "Connected successfully";
?>
<?php
$servername = "localhost";
$username = "username";
$password = "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 "Connected successfully";
} catch(PDOException $e) {
echo "Connection failed: " . $e->getMessage();
}
?>
Lưu ý: Trong ví dụ PDO ở trên, chúng tôi đã chỉ định tên cơ sở dữ liệu là myDB. PDO yêu cầu cơ sở dữ liệu hợp lệ để kết nối. Nếu không có cơ sở dữ liệu được chỉ định, một ngoại lệ được đưa ra.
Tip: Một lợi ích lớn của PDO là nó có một lớp ngoại lệ để xử lý bất kỳ vấn đề nào có thể xảy ra trong các truy vấn cơ sở dữ liệu của chúng tôi. Nếu một ngoại lệ được ném trong khối try {}, tập lệnh dừng thực thi và nhảy vào khối catch() {} đầu tiên.
Kết nối sẽ được đóng tự động khi tập lệnh kết thúc. Để đóng kết nối trước hãy sử dụng` lệnh sau:
$conn->close();
mysqli_close($conn);
$conn = null;
Một cơ sở dữ liệu có nhiều bảng. Bạn sẽ cần được cấp quyền CREATE đặc biệt để tạo hoặc xóa cơ sở dữ liệu MySQL.
Câu lệnh CREATE DATABASE được sử dụng để tạo cơ sở dữ liệu trong MySQL.
<?php
$servername = "localhost";
$username = "username";
$password = "password";
// Create connection
$conn = new mysqli($servername, $username, $password);
// Check connection
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
// Create database
$sql = "CREATE DATABASE myDB";
if ($conn->query($sql) === TRUE) {
echo "Database created successfully";
} else {
echo "Error creating database: " . $conn->error;
}
$conn->close();
?>
Lưu ý: Khi bạn tạo cơ sở dữ liệu mới, bạn chỉ phải chỉ định ba đối số đầu tiên cho đối tượng mysqli (servername, username, password).
Tip: Nếu bạn phải sử dụng một cổng cụ thể, hãy thêm một chuỗi trống cho đối số tên cơ sở dữ liệu (database name), như sau: new mysqli("localhost", "username", "password", "", port)
<?php
$servername = "localhost";
$username = "username";
$password = "password";
// Create connection
$conn = mysqli_connect($servername, $username, $password);
// Check connection
if (!$conn) {
die("Connection failed: " . mysqli_connect_error());
}
// Create database
$sql = "CREATE DATABASE myDB";
if (mysqli_query($conn, $sql)) {
echo "Database created successfully";
} else {
echo "Error creating database: " . mysqli_error($conn);
}
mysqli_close($conn);
?>
<?php
$servername = "localhost";
$username = "username";
$password = "password";
try {
$conn = new PDO("mysql:host=$servername", $username, $password);
// set the PDO error mode to exception
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$sql = "CREATE DATABASE myDB";
// use exec() because no results are returned
$conn->exec($sql);
echo "Database created successfully<br>";
} catch(PDOException $e) {
echo $sql . "<br>" . $e->getMessage();
}
$conn = null;
?>
Một bảng cơ sở dữ liệu có tên duy nhất và các cột. Câu lệnh CREATE TABLE được sử dụng để tạo bảng trong MySQL.
Chúng tôi sẽ tạo một bảng có tên "MyGuests", với năm cột: "id", "firstname", "lastname", "email" và "reg_date" như sau:
CREATE TABLE MyGuests (
id INT(6) UNSIGNED AUTO_INCREMENT PRIMARY KEY,
firstname VARCHAR(30) NOT NULL,
lastname VARCHAR(30) NOT NULL,
email VARCHAR(50),
reg_date TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
)
Kiểu dữ liệu xác định loại dữ liệu mà cột có thể lưu trữ. Sau kiểu dữ liệu, bạn có thể chỉ định các thuộc tính tùy chọn khác cho mỗi cột:
Mỗi bảng nên có một cột khóa chính (trong trường hợp này là cột "id"). Giá trị của nó phải là duy nhất cho mỗi bản ghi trong bảng.
Các ví dụ sau đây minh họa cách tạo bảng trong PHP:
<?php
$servername = "localhost";
$username = "username";
$password = "password";
$dbname = "myDB";
// Create connection
$conn = new mysqli($servername, $username, $password, $dbname);
// Check connection
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
// sql to create table
$sql = "CREATE TABLE MyGuests (
id INT(6) UNSIGNED AUTO_INCREMENT PRIMARY KEY,
firstname VARCHAR(30) NOT NULL,
lastname VARCHAR(30) NOT NULL,
email VARCHAR(50),
reg_date TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
)";
if ($conn->query($sql) === TRUE) {
echo "Table MyGuests created successfully";
} else {
echo "Error creating table: " . $conn->error;
}
$conn->close();
?>
<?php
$servername = "localhost";
$username = "username";
$password = "password";
$dbname = "myDB";
// Create connection
$conn = mysqli_connect($servername, $username, $password, $dbname);
// Check connection
if (!$conn) {
die("Connection failed: " . mysqli_connect_error());
}
// sql to create table
$sql = "CREATE TABLE MyGuests (
id INT(6) UNSIGNED AUTO_INCREMENT PRIMARY KEY,
firstname VARCHAR(30) NOT NULL,
lastname VARCHAR(30) NOT NULL,
email VARCHAR(50),
reg_date TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
)";
if (mysqli_query($conn, $sql)) {
echo "Table MyGuests created successfully";
} else {
echo "Error creating table: " . mysqli_error($conn);
}
mysqli_close($conn);
?>
<?php
$servername = "localhost";
$username = "username";
$password = "password";
$dbname = "myDB";
try {
$conn = new PDO("mysql:host=$servername;dbname=$dbname", $username, $password);
// set the PDO error mode to exception
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
// sql to create table
$sql = "CREATE TABLE MyGuests (
id INT(6) UNSIGNED AUTO_INCREMENT PRIMARY KEY,
firstname VARCHAR(30) NOT NULL,
lastname VARCHAR(30) NOT NULL,
email VARCHAR(50),
reg_date TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
)";
// use exec() because no results are returned
$conn->exec($sql);
echo "Table MyGuests created successfully";
}
catch(PDOException $e) {
echo $sql . "<br>" . $e->getMessage();
}
$conn = null;
?>
Bạn có thể vui lòng tắt trình chặn quảng cáo ❤️ để hỗ trợ chúng tôi duy trì hoạt động của trang web.
Hướng dẫn lập trình PHP toàn tập sẽ giúp bạn từng bước tìm hiểu và nắm vững ngôn ngữ lập trình PHP.
Hướng dẫn cách truy xuất, lọc, sắp xếp dữ liệu MySQL trong PHP sử dụng MySQLi và PDO.
MySQL prepared statements trong PHP rất hữu ích để chống lại các cuộc tấn công SQL Injection.
Hướng dẫn này sẽ giúp bạn tìm hiểu cách thêm dữ liệu vào MySQL sử dụng MySQLi và PDO trong PHP.