Làm thế nào để kết nối PHP với MySQL Database
Nếu bạn là người mới trong giai đoạn lập trình viên, việc biết cách kết nối PHP với MySQL database rất hữu ích. Bạn có thể tùy chỉnh, xem, hoặc quản lý bảng được tạo trong MySQL database. Bài này sẽ chỉ bạn cách dễ nhất để thực hiện việc này.
Nhận ưu đãi tới 90% giảm giá gói PHP hosting
Tạo MySQL Database
Bước này cần thiết trong trường hợp nếu bạn chưa có MySQL database. Tại TINET.VN, MySQL database có thể được tạo dễ dàng tạo trong phần MySQL Databases như các bước bên dưới:
- Tìm MySQL Databases trong phần Databases.
- Điền thông tin cần thiết và nhấn nút Create.
Đối với cPanel, các bước tạo database cũng tương tự.
Hãy lưu lại các thông tin về MySQL database bạn mới tạo để dùng cho bước tiếp theo. Đừng quên lưu cả thông tin database username và username password nữa nhé bạn!.
Viết code để kết nối PHP với MySQL database
Hiện tại có 2 phương thức để kết nối tới cơ sở dữ liệu MySQL là MySQLi và PDO.
MySQLi viết tắt của MySQL Improved, nó thêm tính năng trong giao diện của MySQL database. MySQLi có tính procedural và object-oriented, yếu tố đầu tiên để dùng cho phiên bản cũ hơn của MySQL.
MySQL gốc chia tác vụ theo tuyến tính, từng bước một, khiến việc điều chỉnh khó khắn vì bạn phải sửa code từ trên cùng. Trong khi đó, MySQLi xem dữ liệu như là một bộ các đối tượng với functions, cho phép user thêm hoặc xóa dữ liệu dễ dàng.
Hàm mysql_ đã bị deprecated (lỗi thời) và không nên được dùng nữa vì thiếu an toàn và không còn được phát triển hay bảo trì nữa.
PDO viết tắt của cụm PHP Data Object. Khác biệt chính giữa PDO và MySQLi là PDO hỗ trợ nhiều loại database khác nhau (MySQL, MS SQL, Postgre DB) trong cùng một script, bạn chỉ cần viết các hàm liên quan đến dữ liệu một lần. PDO là ‘object oriented’ (hướng đối tượng), kết nối giữa website và database được tạo bởi các biến đối tượng.
Một thay đổi quan trọng là cả 2 phương pháp đều đã hỗ trợ ‘prepared statements’, giúp tăng cường khả năng chống SQL injection khi kết nối mysql với php để chỉnh sửa thông tin.
Bạn cũng cần phải điền đúng server name hoặc hostname. Ở TINET.VN, MySQL hostname cũng đặt trong mục MySQL Databases. Trong ví dụ này, hostname sẽ là: localhost. Thông thường đây là tên bạn dùng khi upload PHP script lên cùng server với database.
Ngược lại, nếu bạn kết nối tới database từ một máy từ xa (máy của bạn chẳng hạn) bạn sẽ cần dùng địa chỉ IP của MySQL server đó. Để biết thêm thông tin, bạn có thể cần liên hệ với nhà cung cấp hosting để họ đưa bạn chính xác thông tin hostname cần điền là gì.
Sử dụng MySQLi để kết nối script PHP tới MySQL
Làm theo các bước sau để dùng MySQLi kết nối PHP script và MySQL:
- Chuyển tới File Manager -> public_html
- Tạo File mới bằng cách click icon file trên thanh menu
- Lưu nó thành tên databaseconnect.php. Bạn có thể thay thế tên này tùy ý nhưng nhớ đuôi file phải là php
- Nhấn double click vào nó để mở lên và dán đoạn code sau vào. Thay thế 4 giá trị sau <?php với thông tin bạn có ở bước trước.
<?php $servername = "localhost"; $database = "databasename"; $username = "username"; $password = "password"; // Create connection $conn = mysqli_connect($servername, $username, $password, $database); // Check connection if (!$conn) { die("Connection failed: " . mysqli_connect_error()); } echo "Connected successfully"; mysqli_close($conn); ?>
Giải thích code MySQLi dùng để nối MySQL database
Phương pháp chính của script này là hàm mysqli_connect(). Đây là hàm PHP dùng để thực thi kết nối tới một MySQL server.
Ở đầu code, chúng ta thấy có các biến khai báo và giá trị được cấp cho chúng. Thông thường, chúng ta cần bốn biến để thiết lập kết nối cơ sở dữ liệu trong php code: $servername, $database, $username và $password. Trong code này, chúng tôi đã đặt thông tin database chính xác cho những biến này, để sau khi dùng hàm mysqli_connect() nó sẽ dùng các giá trị nhập vào.
Nếu kết nối thất bạn, function die() được thực thi. Nó sẽ hủy script và cho kết quả lỗi mà ta đặt ra. Mặc định nó sẽ hiện Connection failed và kèm theo một thông báo lỗi để ta biết lỗi do đâu.
Nếu kết nối thành công, phần code sau in ra Connected successfully sẽ được thực thi.
Dòng cuối cùng của lệnh mysqli_close, chỉ đơn giản dùng để đóng kết nối giữa PHP script và database thủ công. Nếu không chỉ định, kết nối MySQL sẽ tự đóng sau khi script kết thúc.
Dùng PDO để kết nối PHP với MySQL database
Phương pháp khác để kết nối PHP với MySQL là sử dụng PDO. Phương pháp này cũng tương tự cách dùng MySQLi, nhưng hơi khác:
- Trong public_html, tạo một file có tên pdoconfig.php và nhập code sau vào. Đừng quên thay đổi những thông tin database. Save and Close sau khi hoàn tất.
<?php $host = 'localhost'; $dbname = 'databasename'; $username = 'username'; $password = 'password';
- Tạo tiếp một file có tên databaseconnect.php trong cùng thư mục nhưng dán code sau vào. Nếu bạn đặt tên file trước khác, hãy đảm bảo bạn đổi giá trị tương ứng trong require_once.
<?php require_once 'pdoconfig.php'; try { $conn = new PDO("mysql:host=$host;dbname=$dbname", $username, $password); echo "Connected to $dbname at $host successfully."; } catch (PDOException $pe) { die("Could not connect to the database $dbname :" . $pe->getMessage()); }
Giải thích về code PDO
Một kết nối PDO database cần tạo ‘PDO object’ với Data Source Name (DSN), username và password.
DSN định nghĩa loại database của bạn, tên database, và bất kỳ thông tin nào cần thiết khác. Đây là những biến và giá trị chúng ta đặt trong dbconfig.php file, được sử dụng một lần bằng code require_once trong databaseconnect.php.
Khi tạo PDO object dùng cho database connection, bạn sẽ thấy mã code ‘try…catch…’ . Có nghĩa là script này sẽ thử kết nối tới MySQL. Nếu có vấn đề, code trong phần ‘catch’ sẽ chạy. Bạn có thể dùng catch block để hiển thị mã báo lỗi hoặc chay code khác nếu quá trình thử thất bại.
Nếu kết nối thành công, nó sẽ in ra tin “Connected to $dbname at $host successfully.” Tuy nhiên, nếu thử kết nối giữa PHP tới MySQL thất bại, catch code sẽ hiển thị lỗi kết nối đơn giản và ngừng script.
Kiểm tra kết nối PHP với MySQL có thành công không
Để kiểm tra kết nối có thành công không, truy cập vào tên miền dạng: yourdomain/databaseconnect.php. Nếu tên file PHP của bạn khác, hãy thay đổi nó cho phù hợp.
Bạn sẽ kết quả là “Connected successfully” hoặc biến thể của thông báo này nếu không gặp lỗi.
Giờ nếu kết nối PHP với MySQL không thành công, bạn sẽ thấy thông báo lỗi hơi khác giữa MySQLi và PDO.
Sai mật khẩu
Lỗi này xảy ra khi mật khẩu hoặc bất kỳ thông tin đăng nhập nào trong PHP code bị sai.
Nếu bạn thấy lỗi “Access denied” hoặc “Could not connect to database” với “(using password: YES)” ở cuối, điều đầu tiên bạn cần làm là kiểm tra thông tin database. Có thể có lỗi đánh máy hoặc thiếu gì đó.
Không thể kết nối tới MySQL Server
Nếu bạn gặp lỗi “Can’t connect to MySQL server on ‘server’ (110)” trong MySQLi, có nghĩa là script này không nhận được phản hồi từ server. Điều này xảy ra khi bạn đặt “server” thay vì “localhost” trong $servername, và tên này không khớp với thông tin server.
Mã lỗi trong PDO sẽ là “Connection failed: SQLSTATE[Hy000] [2002]” kèm theo thông tin rằng không tìm thấy My SQL. Cách sửa lỗi kết nối PHP với MySQL cũng tương tự như trên.
Dĩ nhiên, hãy luôn chú ý quy tắc vàng để sửa lỗi: luôn kiểm tra nhật ký lỗi của website.
Log (nhật ký lỗi) có thể đặt trong cùng thư mục nơi script chạy. Ví dụ, nếu bạn đang chạy script trong public_html, bạn sẽ thấy error_log trong cùng thư mục
Lời kết
Trong bài hướng dẫn này, chúng tôi đã hướng dẫn cơ bản cách kết nối php tới MySQL database bằng cách sử dụng MySQLi và PHP Data Objects (PDO).
Bạn có thể sử dụng tài liệu này kết hợp với các script nâng cao khác, nhưng hãy làm bước này thành công vì kết nối cơ sở dữ liệu trong php trước là bước đầu tiên trong quá trình thao tác với database.
Hãy để lại bình luận cho chúng tôi biết nếu bạn có gặp bất kỳ vấn đề nào khi sử dụng hướng dẫn này hoặc vấn đề khi kết nối PHP với MySQL.
Write a Comment
You must be logged in to post a comment.