Khi viết thế hệ trang bằng PHP, tôi thường thấy mình viết một tập các tệp chứa đầy các truy vấn cơ sở dữ liệu. Ví dụ: tôi có thể có một truy vấn để tìm nạp một số dữ liệu về một bài đăng trực tiếp từ cơ sở dữ liệu để hiển thị trên một trang, như thế này:
$statement = $db->prepare('SELECT * FROM posts WHERE id=:id');
$statement->bindValue(':id', $id, PDO::PARAM_INT);
$statement->execute();
$post = $statement->fetch(PDO::FETCH_ASSOC);
$content = $post['content']
// do something with the content
Các truy vấn nhanh, một lần này thường nhỏ, nhưng đôi khi tôi kết thúc với một phần lớn mã tương tác cơ sở dữ liệu bắt đầu trông khá lộn xộn.
Trong một số trường hợp, tôi đã giải quyết vấn đề này bằng cách tạo một thư viện hàm đơn giản để xử lý các truy vấn db liên quan đến bài đăng của mình, rút ngắn khối mã đó thành đơn giản:
$content = post_get_content($id);
Và điều đó thật tuyệt. Hoặc ít nhất là cho đến khi tôi cần phải làm một cái gì đó khác. Có lẽ tôi cần phải có năm bài viết gần đây nhất để hiển thị trong một danh sách. Vâng, tôi luôn có thể thêm một chức năng khác:
$recent_posts = post_get_recent(5);
foreach ($recent_posts as $post) { ... }
Nhưng điều đó kết thúc bằng một SELECT *
truy vấn, điều mà tôi thường thực sự không cần dù sao, nhưng thường quá phức tạp để trừu tượng hợp lý. Cuối cùng tôi kết thúc với một thư viện lớn các hàm tương tác cơ sở dữ liệu cho mỗi trường hợp sử dụng hoặc một loạt các truy vấn lộn xộn bên trong mã của mỗi trang. Và ngay cả khi tôi đã xây dựng các thư viện này, tôi sẽ thấy mình cần phải thực hiện một tham gia nhỏ mà tôi chưa từng sử dụng trước đây và đột nhiên tôi cần phải viết một chức năng chuyên môn cao khác để thực hiện công việc.
Chắc chắn, tôi có thể sử dụng các hàm cho các trường hợp sử dụng chung và truy vấn cho các tương tác cụ thể, nhưng ngay khi tôi bắt đầu viết các truy vấn thô, tôi bắt đầu quay lại truy cập trực tiếp vào mọi thứ. Dù vậy, hoặc tôi sẽ trở nên lười biếng và sẽ bắt đầu thực hiện mọi thứ trong các vòng lặp PHP thực sự nên được thực hiện trực tiếp trong các truy vấn MySQL.
Tôi muốn hỏi những người có kinh nghiệm hơn với việc viết các ứng dụng internet: việc tăng khả năng duy trì có xứng đáng với các dòng mã bổ sung và sự thiếu hiệu quả có thể có mà các tóm tắt có thể đưa ra không? Hoặc chỉ đơn giản là sử dụng chuỗi truy vấn trực tiếp là một phương pháp có thể chấp nhận để xử lý các tương tác cơ sở dữ liệu?
select
- bạn sẽ chỉ phải gọi các quy trình đó với một số tham số bạn cần