Bạn có muốn tìm hiểu cách kết nối PHP với MySQL và thực hiện các kiểu hoạt động cơ sở dữ liệu khác nhau không? Trong bài viết này, chúng tôi sẽ làm điều đó — chúng tôi sẽ thảo luận về khả năng kết nối cơ sở dữ liệu MySQL trong PHP.
PHP cung cấp các cách khác nhau để kết nối PHP với máy chủ cơ sở dữ liệu MySQL. Cho đến phiên bản PHP 5.5, một trong những cách phổ biến nhất là với phần mở rộng MySQL — nó cung cấp một cách "thủ tục" để kết nối với máy chủ MySQL. Tuy nhiên, tiện ích mở rộng này không được chấp nhận kể từ PHP 5.5, vì vậy chúng ta sẽ không thảo luận về điều đó.
Hiện tại, hai lựa chọn của bạn là PDO và MySQLi.
Phần mở rộng PDO (PHP Data Objects) hỗ trợ các loại máy chủ cơ sở dữ liệu bên dưới khác nhau cùng với máy chủ MySQL. Và do đó, nó có thể di động trong trường hợp bạn quyết định hoán đổi máy chủ cơ sở dữ liệu bên dưới tại bất kỳ thời điểm nào trong tương lai.
Mặt khác, phần mở rộng MySQLi dành riêng cho máy chủ MySQL và cung cấp tốc độ và hiệu suất tốt hơn. Phần mở rộng MySQLi lúc đầu cũng có thể đơn giản hơn một chút để hiểu vì nó cho phép bạn viết các truy vấn SQL trực tiếp. Nếu bạn đã làm việc với cơ sở dữ liệu SQL trước đây, điều này sẽ rất quen thuộc. Tuy nhiên, phần mở rộng PDO tạo ra một ánh xạ mạnh mẽ từ cơ sở dữ liệu SQL tới mã PHP của bạn và cho phép bạn thực hiện nhiều thao tác với cơ sở dữ liệu mà không cần biết chi tiết về SQL hoặc cơ sở dữ liệu. Về lâu dài và đối với các dự án lớn hơn, điều này có thể tiết kiệm rất nhiều nỗ lực viết mã và gỡ lỗi.
Trong bài đăng này, tôi sẽ sử dụng phần mở rộng MySQLi. Nhưng bạn có thể tìm hiểu thêm về tiện ích mở rộng PDO tại đây trên Envato Tuts +.
- PHP Nhanh chóng tạo giao diện CRUD PHP với Công cụ tạo CRUD nâng cao PDOSajal Soni
Chúng tôi sẽ đề cập đến các chủ đề sau trong bài viết này:
- tạo kết nối MySQL
- chèn, cập nhật và xóa bản ghi
- truy xuất bản ghi
Tập lệnh cơ sở dữ liệu PHP tốt nhất trên CodeCanyon
Trong bài đăng này, tôi sẽ chỉ cho bạn cách tạo kết nối trần với cơ sở dữ liệu MySQL từ PHP. Đây là một kỹ năng quan trọng cần có, nhưng nếu bạn muốn tiết kiệm thời gian cho dự án tiếp theo của mình, bạn có thể muốn nâng cấp lên một kịch bản cơ sở dữ liệu chuyên nghiệp. Điều này sẽ tiết kiệm thời gian và làm cho công việc của bạn dễ dàng hơn.
Khám phá các tập lệnh cơ sở dữ liệu PHP tốt nhất và hữu ích nhất từng được tạo trên CodeCanyon. Với khoản thanh toán một lần chi phí thấp, bạn có thể mua các chủ đề WordPress chất lượng cao này và cải thiện trải nghiệm trang web cho bạn và khách truy cập của bạn.
Dưới đây là một số tập lệnh cơ sở dữ liệu PHP tốt nhất hiện có trên CodeCanyon cho năm 2020.
- PHP So sánh các lớp trừu tượng cơ sở dữ liệu PHP và plugin CRUD Sajal Soni
Tạo kết nối MySQL
Trong phần này, tôi sẽ chỉ cho bạn cách bạn có thể kết nối với máy chủ MySQL từ tập lệnh PHP của mình và tạo đối tượng kết nối. Sau đó, đối tượng kết nối này sẽ được sử dụng để chạy các truy vấn, tìm nạp đầu ra và thao tác các bản ghi cơ sở dữ liệu. Như chúng ta đã thảo luận trước đó, chúng ta sẽ sử dụng phần mở rộng PHP MySQLi cho bài viết này.
Phần mở rộng MySQLi cung cấp hai cách khác nhau để thực hiện các hoạt động cơ sở dữ liệu. Bạn có thể sử dụng nó theo hướng đối tượng hoặc theo cách thủ tục, nhưng vì hướng dẫn này dành cho người mới bắt đầu, tôi sẽ gắn bó với cách thủ tục. Nếu bạn muốn xem một số đoạn mã hướng đối tượng, bạn có thể ping cho tôi trong phần nhận xét bên dưới và tôi rất sẵn lòng cung cấp chúng.
Để bắt đầu, hãy tiếp tục và tạo db_connect.php tệp dưới gốc tài liệu của bạn với các nội dung sau.
<?php $mysqli_link = mysqli_connect("{HOST_NAME}", "{DATABASE_USERNAME}", "{DATABASE_PASSWORD}", "{DATABASE_NAME}"); if (mysqli_connect_errno()) { printf("MySQL connection failed with the error: %s", mysqli_connect_error()); exit; }
Lưu ý rằng tôi đã sử dụng trình giữ chỗ trong mysqli_connect
chức năng — bạn phải thay thế các giá trị này bằng các giá trị thực tế.
Hãy xem qua từng trình giữ chỗ để xem nó đại diện cho điều gì.
-
{HOST_NAME}
:Điều này đại diện cho tên máy chủ hoặc địa chỉ IP của máy chủ MySQL của bạn. Nếu bạn đã cài đặt máy chủ MySQL trên cùng một hệ thống cùng với PHP, bạn nên sử dụnglocalhost
hoặc127.0.0.1
. Mặt khác, nếu đang sử dụng máy chủ MySQL được lưu trữ bên ngoài, bạn có thể sử dụng tên máy chủ hoặc địa chỉ IP tương ứng. -
{DATABASE_USERNAME}
:Điều này đại diện cho tên người dùng của người dùng MySQL của bạn. Về cơ bản, đây là tên người dùng mà bạn sử dụng để kết nối với máy chủ MySQL của mình. -
{DATABASE_PASSWORD}
:Điều này đại diện cho mật khẩu của người dùng MySQL của bạn. Xin nhắc lại, đây là mật khẩu bạn sử dụng để kết nối với máy chủ MySQL cùng với tên người dùng MySQL. -
{DATABASE_NAME}
:Đây là tên của cơ sở dữ liệu MySQL mà bạn muốn kết nối. Sau khi kết nối được tạo, bạn sẽ truy vấn cơ sở dữ liệu này để thực hiện các thao tác tiếp theo.
Hãy tiếp tục và thay thế các trình giữ chỗ này bằng các giá trị thực tế. Trong trường hợp của tôi, tôi đã cài đặt máy chủ MySQL cục bộ và tôi có người dùng MySQL với tutsplus-demo-user làm tên người dùng MySQL và tutsplus-demo-password làm mật khẩu MySQL. Và cùng với đó, ví dụ trên trông giống như sau:
<?php $mysqli_link = mysqli_connect("localhost", "tutsplus-demo-user", "tutsplus-demo-password", "tutsplus-demo-database"); if (mysqli_connect_errno()) { printf("MySQL connection failed with the error: %s", mysqli_connect_error()); exit; }
Nếu bạn chạy ví dụ này, nó sẽ tạo một liên kết kết nối cơ sở dữ liệu và gán nó cho $mysqli_link
biến mà chúng tôi sẽ sử dụng sau này để thực hiện các loại hoạt động cơ sở dữ liệu khác nhau.
Mặt khác, nếu có bất kỳ sự cố nào khi thiết lập kết nối, hãy mysqli_connect_errno
hàm sẽ trả về mã lỗi và mysqli_connect_error
chức năng sẽ hiển thị lỗi thực tế. Trong ví dụ trên, chúng tôi đã sử dụng nó cho mục đích gỡ lỗi.
Bây giờ, chúng tôi đã kết nối thành công với máy chủ MySQL và chúng tôi sẽ xem cách sử dụng nó để thực hiện các loại truy vấn khác nhau từ phần tiếp theo trở đi.
Cách Chèn Bản ghi
Trong phần trước, chúng ta đã thảo luận về cách sử dụng mysqli_connect
chức năng thiết lập kết nối cơ sở dữ liệu với máy chủ MySQL. Trong phần này, chúng ta sẽ tiếp tục và thảo luận về cách sử dụng đối tượng kết nối để thực hiện INSERT
truy vấn.
Nếu bạn muốn làm theo các ví dụ được thảo luận trong bài viết này, bạn sẽ cần tạo bảng MySQL sau trong cơ sở dữ liệu của mình. Đó là bảng mà chúng ta sẽ sử dụng trong tất cả các ví dụ từ bây giờ.
CREATE TABLE `students` ( `id` int(11) NOT NULL AUTO_INCREMENT, `first_name` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL, `last_name` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL, `email` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
Hãy tiếp tục và tạo bảng MySQL ở trên bằng cách sử dụng phần mềm phpMyAdmin hoặc công cụ dòng lệnh.
Tiếp theo, hãy tạo db_insert.php
tập tin với các nội dung sau. Xin đừng quên thay thế các thông số kết nối bằng thông số kết nối của riêng bạn.
<?php $mysqli_link = mysqli_connect("localhost", "tutsplus-demo-user", "tutsplus-demo-password", "tutsplus-demo-database"); if (mysqli_connect_errno()) { printf("MySQL connection failed with the error: %s", mysqli_connect_error()); exit; } $insert_query = "INSERT INTO students(`first_name`,`last_name`,`email`) VALUES ('". mysqli_real_escape_string($mysqli_link, 'John') ."','". mysqli_real_escape_string($mysqli_link, 'Wood') ."','". mysqli_real_escape_string($mysqli_link, '[email protected]') ."')"; // run the insert query If (mysqli_query($mysqli_link, $insert_query)) { echo 'Record inserted successfully.'; } // close the db connection mysqli_close($mysqli_link); ?>
Đầu tiên, chúng tôi thiết lập kết nối cơ sở dữ liệu bằng cách sử dụng mysqli_connect
như chúng ta đã thảo luận trước đó. Sau đó, chúng tôi đã chuẩn bị truy vấn chèn mà chúng tôi sẽ thực thi sau này. Điều quan trọng cần lưu ý là chúng tôi đã sử dụng mysqli_real_escape_string
hàm để thoát các giá trị chuỗi mà chúng tôi sẽ sử dụng trong truy vấn chèn. Cụ thể, bạn phải sử dụng chức năng này khi xử lý các giá trị được gửi qua $_POST
các biến để tránh đưa vào SQL.
Cuối cùng, chúng tôi đã sử dụng mysqli_query
hàm, có hai đối số. Đối số đầu tiên là liên kết kết nối hoạt động nơi truy vấn sẽ được thực thi. Và đối số thứ hai là truy vấn MySQL mà chúng ta muốn thực thi. mysqli_query
hàm trả về TRUE
nếu truy vấn được thực thi thành công.
Cuối cùng, chúng tôi đã sử dụng mysqli_close
chức năng đóng kết nối cơ sở dữ liệu đang hoạt động. Một phương pháp hay là đóng kết nối cơ sở dữ liệu sau khi bạn đã thực hiện xong các thao tác với cơ sở dữ liệu.
Hãy tiếp tục và chạy tập lệnh và điều đó sẽ chèn một bản ghi vào students
bảng!
Cách cập nhật hồ sơ
Cập nhật các bản ghi trong cơ sở dữ liệu từ tập lệnh PHP rất giống với thao tác chèn; sự khác biệt duy nhất là truy vấn sẽ là truy vấn cập nhật thay vì truy vấn chèn.
Hãy sửa lại ví dụ trên và cập nhật first_name
, như được hiển thị trong ví dụ sau.
<?php $mysqli_link = mysqli_connect("localhost", "tutsplus-demo-user", "tutsplus-demo-password", "tutsplus-demo-database"); if (mysqli_connect_errno()) { printf("MySQL connection failed with the error: %s", mysqli_connect_error()); exit; } $update_query = "UPDATE students SET `first_name` = '". mysqli_real_escape_string($mysqli_link,'Johnny') ."' WHERE `email` = '[email protected]'"; // run the update query If (mysqli_query($mysqli_link, $update_query)) { echo 'Record updated successfully.'; } // close the db connection mysqli_close($mysqli_link); ?>
Hãy tiếp tục và chạy tập lệnh và điều đó sẽ cập nhật bản ghi trong students
bàn.
Cách chọn bản ghi
Trong các phần trước, chúng ta đã thảo luận về cách bạn có thể chèn và cập nhật các bản ghi trong cơ sở dữ liệu từ tập lệnh PHP. Trong phần này, chúng ta sẽ khám phá cách bạn có thể tìm nạp các bản ghi từ cơ sở dữ liệu bằng cách sử dụng các loại hàm MySQLi khác nhau.
Trước tiên, bạn cần sử dụng mysqli_query
chức năng để thực hiện truy vấn chọn. Sau khi thực hiện thành công truy vấn đã chọn, mysqli_query
hàm trả về đối tượng kết quả mysqli, đối tượng mà chúng ta có thể sử dụng để lặp qua các bản ghi được trả về bởi truy vấn chọn. Khi nói đến việc tìm nạp và lặp lại các bản ghi từ đối tượng kết quả MySQLi, có sẵn các chức năng khác nhau.
-
mysqli_fetch_all
:Nó cho phép bạn tìm nạp tất cả các hàng kết quả cùng một lúc. Bạn cũng có thể chỉ định xem bạn muốn kết quả dưới dạng mảng kết hợp, mảng số hay cả hai. -
mysqli_fetch_array
:Nó cho phép bạn truy xuất từng hàng một. Và do đó, bạn sẽ phải sử dụng vòng lặp while để lặp lại tất cả các bản ghi. Một lần nữa, bạn có thể chỉ định xem bạn muốn một hàng kết quả là một mảng kết hợp, một mảng số hay cả hai. -
mysqli_fetch_assoc
:Nó tìm nạp từng hàng kết quả dưới dạng một mảng liên kết. -
mysqli_fetch_object
:Nó tìm nạp từng hàng kết quả dưới dạng một đối tượng.
Hãy xem ví dụ sau để hiểu cách nó hoạt động:
<?php $mysqli_link = mysqli_connect("localhost", "tutsplus-demo-user", "tutsplus-demo-password", "tutsplus-demo-database"); if (mysqli_connect_errno()) { printf("MySQL connection failed with the error: %s", mysqli_connect_error()); exit; } $select_query = "SELECT * FROM students LIMIT 10"; $result = mysqli_query($mysqli_link, $select_query); while ($row = mysqli_fetch_array($result, MYSQLI_ASSOC)) { echo "First Name:" . $row['first_name'] . "<br/>"; echo "Last Name:" . $row['last_name'] . "<br/>"; echo "Email:" . $row['email'] . "<br/>"; echo "<br/>"; } // close the db connection mysqli_close($mysqli_link); ?>
Như bạn có thể thấy, chúng tôi đã sử dụng mysqli_fetch_array
chức năng với MYSQLI_ASSOC
tùy chọn như một đối số thứ hai. Và do đó, nó trả về hàng kết quả dưới dạng một mảng liên kết. Nếu bạn sử dụng MYSQLI_NUM
tùy chọn, bạn sẽ truy cập nó như $row[0]
, $row[1]
và $row[2]
trong ví dụ trên.
Mặt khác, nếu bạn sử dụng mysqli_fetch_object
trong ví dụ trên, bạn có thể truy cập các giá trị như được hiển thị trong đoạn mã sau. Để ngắn gọn, tôi sẽ chỉ bao gồm đoạn mã vòng lặp while.
… … while ($row = mysqli_fetch_object($result)) { echo "First Name:" . $row->first_name . "<br/>"; echo "Last Name:" . $row->last_name . "<br/>"; echo "Email:" . $row->email . "<br/>"; echo "<br/>"; } ... ...
Vì vậy, bằng cách này, bạn có thể tìm nạp và hiển thị các bản ghi từ cơ sở dữ liệu MySQLi.
Cách xóa bản ghi
Trong phần này, chúng ta sẽ xem cách chạy các truy vấn xóa khỏi tập lệnh PHP. Xóa bản ghi khỏi cơ sở dữ liệu là một thao tác khá đơn giản vì bạn chỉ cần chuẩn bị truy vấn xóa và chạy nó với mysqli_query
chức năng.
Hãy xem qua ví dụ sau để xem nó hoạt động như thế nào.
<?php $mysqli_link = mysqli_connect("localhost", "tutsplus-demo-user", "tutsplus-demo-password", "tutsplus-demo-database"); if (mysqli_connect_errno()) { printf("MySQL connection failed with the error: %s", mysqli_connect_error()); exit; } $delete_query = "DELETE FROM students WHERE `email` = '[email protected]'"; // run the update query If (mysqli_query($mysqli_link, $delete_query)) { echo 'Record deleted successfully.'; } // close the db connection mysqli_close($mysqli_link); ?>
Như bạn có thể thấy, mọi thứ đều giống như chúng ta đã thấy với các ví dụ về chèn và cập nhật, ngoại trừ truy vấn là truy vấn xóa trong trường hợp này.
Vì vậy, đó là cách bạn có thể thực hiện các loại hoạt động cơ sở dữ liệu khác nhau từ tập lệnh PHP.
Và cùng với đó, chúng ta đã đi đến phần cuối của hướng dẫn này. Những gì chúng ta đã thảo luận cho đến nay sẽ giúp bạn củng cố các khái niệm kết nối cơ sở dữ liệu, cụ thể là cách kết nối PHP với MySQL và thực hiện các loại hoạt động khác nhau.