Hướng dẫn crud operations in php

Vietnamese (Tiếng Việt) translation by Vy Cam Nguyen (you can also view the original English article)

Trong bài viết này, chúng ta sẽ khám phá cách bạn có thể sử dụng cơ sở dữ liệu MySQL để thực hiện các thao tác CRUD(create - tạo mới, read - đọc, update - cập nhật và delete - xóa) với PHP. Nếu bạn làm việc với kết nối cơ sở dữ liệu trong PHP, bài viết này là một khởi đầu tuyệt vời.

Nếu bạn mới làm quen với PHP, bạn có thể nhận ra rằng kết nối cơ sở dữ liệu là một tính năng cần thiết mà sớm hay muộn bạn sẽ cần phải quen thuộc. Trong đa số trường hợp, cơ sở dữ liệu là xương sống của bất kỳ ứng dụng web và chứa dữ liệu của ứng dụng. Vì vậy, là một nhà phát triển PHP, bạn sẽ cần biết cách xử lý các hoạt động cơ sở dữ liệu.

Trong bài viết này, chúng tôi làm đơn giản mọi thứ và khám phá cách sử dụng các hàm mysqli cốt lõi. Trong các bài viết sắp tới của loạt bài này, chúng ta sẽ khám phá một vài cách khác để xử lý kết nối cơ sở dữ liệu.

Hôm nay, chúng ta sẽ đi qua những điều cơ bản về kết nối cơ sở dữ liệu trong PHP và chúng ta sẽ sử dụng cơ sở dữ liệu MySQL làm cơ sở dữ liệu của chúng ta. Chúng ta hãy lướt nhanh những gì chúng ta sẽ trình bày trong bài viết này:

  • Cách thiết lập kết nối cơ sở dữ liệu
  • Cách để chọn một cơ sở dữ liệu
  • Cách để tạo mới và cập nhật các bản ghi
  • Cách để đọc các bản ghi
  • Cách để xóa các bản ghi

Giả sử rằng bạn có một bản cài đặt đang hoạt động của PHP và MySQL và bạn biết cơ bản về MySQL. Ngoài ra, bạn sẽ cần đảm bảo rằng tiện ích mở rộng mysqli được kích hoạt trong cài đặt PHP của bạn, vì chúng tôi sẽ sử dụng nó để thực hiện các hoạt động cơ sở dữ liệu với cơ sở dữ liệu MySQL.

Nếu bạn không chắc chắn về tiện ích mở rộng mysqli, bạn có thể kiểm tra nó bằng hàm phpinfo(). Trong kết quả phpinfo(), bạn có thể kiểm tra xem có phần nào có tiêu đề mysqli không. Bạn cũng nên xem đề mục Mysqli Support | enabled được kích hoạt nếu tiện ích mở rộng mysqli được bật.

Cũng có một cách dễ dàng để kiểm tra với giao diện CLI. Bạn có thể chạy lệnh sau để liệt kê tất cả các tiện ích mở rộng được bật cùng với thiết lập PHP của bạn.

$php -m

Lệnh này sẽ in một danh sách các tiện ích mở rộng và nếu nó chứa từ khóa mysqli, tức là tiện ích mở rộng mysqli được kích hoạt.

Bây giờ chúng ta đã thiết lập, hãy bắt đầu tạo kết nối cơ sở dữ liệu.

Cách thiết lập kết nối cơ sở dữ liệu

Trong phần này, chúng tôi sẽ thảo luận về phương pháp bạn có thể thiết lập kết nối cơ sở dữ liệu bằng cách sử dụng tiện ích mở rộng mysqli.

Có hai cách bạn có thể sử dụng phần mở rộng mysqli, hướng thủ tục và hướng đối tượng, nhưng chúng tôi sẽ sử dụng cách thức thủ tục trong bài đăng này để giữ cho mọi thứ đơn giản. Nếu bạn tò mò về cú pháp hướng đối tượng, hãy cho tôi biết câu hỏi của bạn trong phần bình luận và tôi sẽ vui lòng trả lời chúng.

Đầu tiên, chúng ta hãy xem qua cú pháp của hàm mysqli_connect, được sử dụng để thiết lập kết nối với back-end MySQL.

Hàm mysqli_connect nhận bốn đối số và trả về đối tượng kết nối khi kết nối thành công. Chúng ta hãy đi qua từng đối số:

  • MYSQL_HOSTNAME: Hằng số này nên được thay thế bằng tên máy chủ hoặc địa chỉ IP của máy chủ MySQL. Nếu bạn đang làm việc với máy chủ MySQL trong hệ thống cục bộ của mình, bạn có thể sử dụng localhost hoặc 127.0.0.1.
  • MYSQL_USERNAME: Username của người dùng MySQL.
  • MYSQL_PASSWORD: Password của người dùng MySQL của bạn.
  • MYSQL_DATABASE: Cơ sở dữ liệu bạn muốn kết nối.

Khi kết nối thành công, $connection_obj chứa đối tượng kết nối. Với điều này, bạn đã sẵn sàng để chạy các truy vấn đối với cơ sở dữ liệu được cung cấp cho đối số MYSQL_DATABASE.

Mặt khác, nếu kết nối không thành công, chúng ta có thể gỡ lỗi nó như trong snippet sau:

Trong phần tiếp theo, chúng ta sẽ xem cách bạn có thể chọn một cơ sở dữ liệu cụ thể bằng cách sử dụng đối tượng kết nối.

Cách chọn cơ sở dữ liệu

Trong phần trước, chúng ta đã thảo luận cách thiết lập kết nối cơ sở dữ liệu bằng hàm mysqli_connect. Trong phần này, chúng ta sẽ xem xét cách chọn cơ sở dữ liệu sau khi kết nối MySQL thành công.

Tất nhiên, như chúng ta đã thấy, bạn luôn có thể truyền vào tên cơ sở dữ liệu trong đối số thứ tư của hàm mysqli_connect. Nhưng cũng có một cách khác bạn có thể làm điều này trong trường hợp bạn muốn thay đổi cơ sở dữ liệu sau khi bạn kết nối với MySQL. Bạn có thể sử dụng hàm mysqli_select_db để chọn cơ sở dữ liệu.

Hãy xem lại ví dụ đã thảo luận trong phần trước để xem nó có thể hoạt động như thế nào.

Như bạn có thể thấy, chúng tôi chỉ truyền ba đối số trong hàm mysqli_connect và điều đó sẽ kết nối cơ sở dữ liệu thành công. Thay vì truyền vào tên cơ sở dữ liệu trong đối số thứ tư, chúng tôi chọn cơ sở dữ liệu bằng hàm mysqli_select_db.

Hàm mysqli_select_db có hai đối số: connection object(đối tượng kết nối) và database(cơ sở dữ liệu) mà bạn muốn kết nối.

Cách insert và update các record(bản ghi)

Trong các phần trước, chúng ta đã thảo luận về cách thiết lập kết nối MySQL và chọn cơ sở dữ liệu để làm việc. Bây giờ, chúng ta sẽ xem xét cách thực hiện các kiểu truy vấn khác nhau đối với cơ sở dữ liệu đã chọn. Trước tiên, hãy xem cách thức để insert và update các bản ghi.

Nếu bạn muốn bám sát với 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à table mà chúng ta sẽ sử dụng trong tất cả các ví dụ kể từ bây giờ.

CREATE TABLE `employee` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `name` varchar(50) COLLATE utf8mb4_unicode_ci NOT NULL,
  `email` varchar(50) COLLATE utf8mb4_unicode_ci NOT NULL,
  `phone` varchar(50) COLLATE utf8mb4_unicode_ci NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

Thực hiện lệnh trên trong cơ sở dữ liệu MySQL của bạn sẽ tạo bảng employee.

Cách tạo mới bản ghi

Để đơn giản, chúng tôi sẽ khởi tạo các giá trị cần được chèn vào bảng employee ở lúc ban đầu của script. Tuy nhiên, trong đa số các trường hợp, những giá trị này sẽ do người dùng nhập vào trong các biến $_POST được gửi bằng đi bằng form.

Trong script trên, trước tiên chúng tôi đã khởi tạo các biến mà chúng tôi sẽ sử dụng trong truy vấn insert. Tiếp theo, chúng tôi đã chuẩn bị truy vấn insert và gán nó cho biến $query.

Điều quan trọng cần lưu ý là chúng tôi đã sử dụng hàm mysqli_real_escape_opes để escape các giá trị chuỗi mà chúng tôi sẽ sử dụng trong truy vấn insert. Bạn phải sử dụng chức năng này khi bạn xử lý các giá trị string được gửi qua các biến $_POST. Điều này đảm bảo rằng người dùng của bạn không chèn mã độc vào các truy vấn cơ sở dữ liệu của bạn.

Cuối cùng, chúng tôi đã chạy truy vấn insert bằng hàm mysqli_query. Hàm mysqli_query được sử dụng để chạy một câu truy vấn đối với cơ sở dữ liệu đang sử dụng. Tổng kết lại chúng tôi đã sử dụng hàm mysqli_close để đóng kết nối đang hoạt động.

Cách update các bản ghi

Trong phần trước, chúng tôi đã thảo luận về cách bạn có thể insert (chèn) các bản ghi mới vào bảng của MySQL. Trong phần này, chúng ta sẽ thấy cách bạn có thể cập nhật một bản ghi đã hiện hữu trong một bảng.

Tôi giả sử rằng một bản ghi đã tồn tại trong bảng employee và id của bản ghi đó là 1. Trong ví dụ sau, chúng tôi sẽ cập nhật một bản ghi có giá trị của 1 trong cột id.

Như bạn có thể thấy trong ví dụ trên, chúng tôi muốn cập nhật cột phone của employee với id là 1. Điều này rất giống với truy vấn insert, ngoại trừ việc chúng tôi đang sử dụng UPDATE thay vì INSERT.

Cách đọc bản ghi

Cho đến giờ, chúng ta đã thảo luận về cách insert và update các bản ghi trong bảng MySQL. Trong phần này, chúng ta sẽ xem cách đọc (fetch) các bản ghi từ bảng MySQL.

Hãy xem ví dụ sau đây.

";
    echo "Name:" . $row['name'] . "
"; echo "Phone:" . $row['phone'] . "
"; echo "Email:" . $row['email'] . "
"; echo "
"; } // close the db connection mysqli_close($connection_obj); ?>

Điều đầu tiên bạn cần làm để tìm đọc các bản ghi từ cơ sở dữ liệu là thực thi truy vấn select bằng cách sử dụng hàm mysqli_query. Sau khi thực hiện thành công truy vấn select, hàm mysqli_query trả về đối tượng mysqli_result và đó là những gì chúng ta đã lưu trữ trong biến $result bên trên.

Tiếp theo, chúng tôi lặp lại tập kết quả bằng cách sử dụng hàm mysqli_fetch_array trong một vòng lặp while. Hàm mysqli_fetch_array tìm đọc một row duy nhất tại một thời điểm từ tập kết quả mysqli.

Hàm mysqli_fetch_array có hai đối số: result object và result type. Result type cho biết kiểu array nào sẽ được trả về từ hàm mysqli_fetch_array. Kết quả có thể là numeric, associative hoặc cả hai. Đó là một đối số tùy chọn và bạn có thể truyền một trong ba giá trị sau: MYSQLI_ASSOC, MYSQLI_NUM hoặc MYSQLI_BOTH. MYSQLI_ASSOC chỉ ra rằng bạn muốn truy xuất các cột theo tên của họ và MYSQLI_NUM chỉ ra rằng bạn muốn truy xuất các cột theo số cột của họ.

Nếu bạn vượt qua giá trị MYSQLI_NUM trong đối số thứ hai của hàm mysqli_fetch_array, bạn có thể truy xuất các cột dưới dạng $row[0], $row[1], v.v. Trong trường hợp này, chúng tôi đã truyền vào giá trị MYSQLI_BOTH, vì vậy chúng tôi có thể truy xuất các cột theo cả hai cách. Nếu bạn chỉ muốn truy xuất các giá trị liên kết, bạn có thể sử dụng hàm mysqli_fetch_assoc thay thế.

Trong phần tiếp theo và phần cuối cùng, chúng ta sẽ xem cách xóa các bản ghi khỏi cơ sở dữ liệu.

Cách delete(xóa) các bản ghi

Trong phần này, chúng ta sẽ xem cách delete(xóa) các bản ghi từ cơ sở dữ liệu.

Hãy xem ví dụ sau đây.

Như bạn có thể thấy, nó hoạt động khá giống với các truy vấn insert và update. Hàm mysqli_query thực thi truy vấn DELETE và cuối cùng sẽ xóa bản ghi khỏi bảng employee.

Tổng kết

Trong bài viết này, chúng tôi đã khám phá cách thức bạn có thể sử dụng cơ sở dữ liệu MySQL với PHP. Bài viết này nhằm mang đến kiến thức cơ bản cho bạnvề kết nối cơ sở dữ liệu MySQL trong PHP cho người mới bắt đầu. Chúng tôi đã thấy cách thức đi từ thiết lập kết nối cơ sở dữ liệu đến thực hiện các loại truy vấn khác nhau.

Vui lòng gửi phản hồi và các câu hỏi của bạn bằng cách sử dụng feed dưới đây.