PHP Cơ bản
PHP Nâng cao
PHP & Cơ sở dữ liệu MySQL
Ví dụ PHP
Tài liệu tham khảo PHP
Quảng cáo

Kết nối với Máy chủ MySQL bằng PHP

Trong hướng dẫn này, bạn sẽ học cách kết nối với máy chủ MySQL bằng PHP.

Các cách kết nối với MySQL thông qua PHP

Để lưu trữ hoặc truy cập dữ liệu bên trong cơ sở dữ liệu MySQL, trước tiên bạn cần kết nối với máy chủ cơ sở dữ liệu MySQL. PHP cung cấp hai cách khác nhau để kết nối với máy chủ MySQL: phần mở rộng MySQLi (MySQL cải tiến) và PDO (PHP Data Objects - Đối tượng dữ liệu PHP).

Mặc dù phần mở rộng PDO có tính di động cao hơn và hỗ trợ hơn mười hai cơ sở dữ liệu khác nhau, phần mở rộng MySQLi như tên gọi cho thấy chỉ hỗ trợ cơ sở dữ liệu MySQL. Tuy nhiên, phần mở rộng MySQLi cung cấp một cách dễ dàng hơn để kết nối và thực thi các truy vấn trên máy chủ cơ sở dữ liệu MySQL. Cả PDO và MySQLi đều cung cấp một API hướng đối tượng, nhưng MySQLi cũng cung cấp một API thủ tục tương đối dễ hiểu cho người mới bắt đầu.

Mẹo: Tiện ích mở rộng MySQLi của PHP cung cấp cả lợi ích về tốc độ và tính năng so với tiện ích mở rộng PDO, vì vậy nó có thể là lựa chọn tốt hơn cho các dự án dành riêng cho MySQL.

Kết nối với Máy chủ cơ sở dữ liệu MySQL

Trong PHP, bạn có thể dễ dàng thực hiện điều này bằng cách sử dụng hàm mysqli_connect(). Tất cả giao tiếp giữa PHP và máy chủ cơ sở dữ liệu MySQL diễn ra thông qua kết nối này. Dưới đây là các cú pháp cơ bản để kết nối với MySQL bằng các phần mở rộng MySQLi và PDO:

Cú pháp: MySQLi, Cách thủ tục

$link =mysqli_connect("hostname", "username", "password", "database");

Cú pháp: MySQLi, Hướng đối tượng

$mysqli = newmysqli("hostname", "username", "password", "database");

Cú pháp: Cách đối tượng dữ liệu PHP (PDO)

$pdo = newPDO("mysql:host=hostname;dbname=database", "username", "password");

Tham số hostname trong cú pháp trên chỉ định tên máy chủ (ví dụ localhost), hoặc địa chỉ IP của máy chủ MySQL, trong khi thông số tên và mật khẩu quy định cụ thể các thông tin đến máy chủ truy cập MySQL, và các tham số cơ sở dữ liệu, nếu được cung cấp sẽ chỉ định cơ sở dữ liệu MySQL mặc định được sử dụng khi thực hiện các truy vấn.

Ví dụ sau đây cho thấy cách kết nối với máy chủ cơ sở dữ liệu MySQL bằng MySQLi (cả cách thủ tục và hướng đối tượng ) và phần mở rộng PDO.

Ví dụ

Thủ tục Hướng đối tượng PDO
<?php
/* Attempt MySQL server connection. Assuming you are running MySQL
server with default setting (user 'root' with no password) */
$link = mysqli_connect("localhost", "root", "");
 
// Check connection
if($link === false){
    die("ERROR: Could not connect. " . mysqli_connect_error());
}
 
// Print host information
echo "Connect Successfully. Host info: " . mysqli_get_host_info($link);
?>
<?php
/* Attempt MySQL server connection. Assuming you are running MySQL
server with default setting (user 'root' with no password) */
$mysqli = new mysqli("localhost", "root", "", "demo");
 
// Check connection
if($mysqli === false){
    die("ERROR: Could not connect. " . $mysqli->connect_error);
}
 
// Print host information
echo "Connect Successfully. Host info: " . $mysqli->host_info;
?>
<?php
/* Attempt MySQL server connection. Assuming you are running MySQL
server with default setting (user 'root' with no password) */
try{
    $pdo = new PDO("mysql:host=localhost", "root", "");
    
    // Set the PDO error mode to exception
    $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    
    // Print host information
    echo "Connect Successfully. Host info: " . 
$pdo->getAttribute(constant("PDO::ATTR_CONNECTION_STATUS"));
} catch(PDOException $e){
    die("ERROR: Could not connect. " . $e->getMessage());
}
?>

Ghi chú: Tên người dùng (username) mặc định cho máy chủ cơ sở dữ liệu MySQL là root và không có mật khẩu. Tuy nhiên, để ngăn cơ sở dữ liệu của bạn bị xâm nhập và truy cập trái phép, bạn nên đặt mật khẩu cho tài khoản MySQL.

Mẹo: Đặt thuộc tính PDO::ATTR_ERRMODE vào PDO::ERRMODE_EXCEPTION để yêu cầu PDO đưa các ngoại lệ bất cứ khi nào xảy ra lỗi cơ sở dữ liệu.

Đóng kết nối máy chủ cơ sở dữ liệu MySQL

Kết nối đến máy chủ cơ sở dữ liệu MySQL sẽ tự động đóng ngay sau khi quá trình thực thi tập lệnh kết thúc. Tuy nhiên, nếu bạn muốn đóng nó sớm hơn, bạn có thể thực hiện việc này bằng cách gọi hàm mysqli_close().

Ví dụ

Thủ tục Hướng đối tượng PDO
<?php
/* Attempt MySQL server connection. Assuming you are running MySQL
server with default setting (user 'root' with no password) */
$link = mysqli_connect("localhost", "root", "");
 
// Check connection
if($link === false){
    die("ERROR: Could not connect. " . mysqli_connect_error());
}
 
// Print host information
echo "Connect Successfully. Host info: " . mysqli_get_host_info($link);
 
// Close connection
mysqli_close($link);
?>
<?php
/* Attempt MySQL server connection. Assuming you are running MySQL
server with default setting (user 'root' with no password) */
$mysqli = new mysqli("localhost", "root", "", "demo");
 
// Check connection
if($mysqli === false){
    die("ERROR: Could not connect. " . $mysqli->connect_error);
}
 
// Print host information
echo "Connect Successfully. Host info: " . $mysqli->host_info;
 
// Close connection
$mysqli->close();
?>
<?php
/* Attempt MySQL server connection. Assuming you are running MySQL
server with default setting (user 'root' with no password) */
try{
    $pdo = new PDO("mysql:host=localhost;dbname=demo", "root", "");
    
    // Set the PDO error mode to exception
    $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    
    // Print host information
    echo "Connect Successfully. Host info: " . 
$pdo->getAttribute(constant("PDO::ATTR_CONNECTION_STATUS"));
} catch(PDOException $e){
    die("ERROR: Could not connect. " . $e->getMessage());
}
 
// Close connection
unset($pdo);
?>

Bài viết này đã giúp ích cho bạn?

Advertisements