Lập trình web với PHP - p26

Chia sẻ: Yukogaru | Ngày: | Loại File: PDF | Số trang:7

0
78
lượt xem
34
download

Lập trình web với PHP - p26

Mô tả tài liệu
  Download Vui lòng tải xuống để xem tài liệu đầy đủ

Chƣơng 6 : CHO PHÉP NGƢỜI SỬ DỤNG SOẠN THẢO CƠ SỞ DỮ LIỆU Xóa một mẩu tin Xóa một mẩu tin thì dễ dàng. Như đã đề cập từ trước, luôn phải kiểm tra truy vấn trong cơ sở dữ liệu thử nghiệm. Việc xóa một mẩu tin trong cơ sở dữ liệu thử nghiệm không bao giờ là mối đe dọa cho hệ thống của bạn. Và việc kiểm tra truy vấn giúp bạn tìm ra những lỗi SQL trước khi xóa tất cả các mẩu tin trong cơ sở dữ liệu bởi vì bạn quên một vài thứ như...

Chủ đề:
Lưu

Nội dung Text: Lập trình web với PHP - p26

  1. Chƣơng 6 : CHO PHÉP NGƢỜI SỬ DỤNG SOẠN THẢO CƠ SỞ DỮ LIỆU Nhận dữ liệu từ cơ sở dữ liệu khi cung cấp một vài dữ liệu cho cơ sở dữ liệu. Nhưng cơ sở dữ liệu thì không tạo ra nội dung mà chỉ lấy dữ liệu từ hệ thống khác. Điều này có nghĩa là bạn phải tạo hệ thống dữ liệu từ PHP. Tất cả cơ sở dữ liệu tương tác dựa trên SQL. Bạn biết là cú pháp SQL lấy dữ liệu từ mảng. Hầu hết mọi người dùng SQL để chèn dữ liệu mà PHP sửa đổi hoặc tạo ra. Chương này đề cập đến soạn thảo cơ sở dữ liệu, bao gồm:.  Thêm: điều này thì đơn giản, nhưng bạn sẽ tìm để thêm vào trong một cơ sở dữ liệu  Xóa: không sửa đổi lại cấu trúc cơ sở dữ liệu và có liên quan đến tính toàn vẹn.  Sữa đổi: thay thế một vài vùng soạn thảo với nội dung mới trong một hồ sơ có sẵn. Xóa một mẩu tin Xóa một mẩu tin thì dễ dàng. Như đã đề cập từ trước, luôn phải kiểm tra truy vấn trong cơ sở dữ liệu thử nghiệm. Việc xóa một mẩu tin trong cơ sở dữ liệu thử nghiệm không bao giờ là mối đe dọa cho hệ thống của bạn. Và việc kiểm tra truy vấn giúp bạn tìm ra những lỗi SQL trước khi xóa tất cả các mẩu tin trong cơ sở dữ liệu bởi vì bạn quên một vài thứ như câu lệnh WHERE. MySQL xóa những thứ thỏa câu lệnh SQL. Xóa có nghĩa là mất dữ liệu. Để xóa một mẩu tin bạn cần biết vị trí của mẩu tin trong cơ sở dữ liệu thông qua một tập hợp các câu lệnh điều kiện WHERE. Mỗi lần câu lệnh được thực thi mẩu tin sẽ bị xóa, không thể quay lại. Mẩu tin bị xóa không hy vọng trả lại. Đây là điều cần lưu ý khi sử dụng câu lệnh DELETE. Ví dụ: Xóa mẩu tin đơn giản
  2. Trước khi bảo PHP xóa mọi thứ, bạn nên thử xóa một mẩu tin từ phpMyAdmin với câu lệnh DELETE. 1. Mở phpMyAdmin và nhập đoạn mã sau: DELETE FROM movie WHERE movie_id = 12 LIMIT 1 2. phpMyAdmin trả lại thông báo rằng bạn xóa một mẩu tin từ bảng Cách thức hoạt động Câu lệnh DELETE SQL sử dụng rất đơn giản, bạn sử dụng câu lệnh LIMIT 1 để giới hạn xóa một mẩu tin. Một cơ sở dữ liệu thường chứa những mẫu tin liên quan với nhau trong những bảng khác nhau. Xóa một vài mẫu tin không xem xét quan hệ của chúng, làm cho bạn khó hiểu. Không may là MySQL không duy trì tính toàn vẹn. Để tránh vấn đề này bạn có thể dùng form phức tạp hơn của câu lệnh DELETE,Cascade Delete, như đề cập trong phần sau Ví dụ:Cascade Delete Bây giờ bạn đã biết cách sử dụng DELETE, bạn sẽ thêm nó vào hệ thống để xóa thông tin một người từ hệ thống. Khi bạn lưu trữ quan hệ một người trong bảng movie, bạn cần cập nhật nội dung của bảng, vì vậy bạn không cần xóa những gì liên quan tới người. Xóa một người giống như cách mở khóa xe và mong đợi bãi giữ xe trống. Bạn cần để chắc chắn không liên quan đến việc xóa các mẩu tin còn lại. Sau đây là những bước thực thi Cascade Delete: 1. Tạo một file mới với tên delete.php và nhập đoạn mã sau:
  3. or die ( mysql_error()); // DELETE SCRIPT if (!isset($_GET[„do‟]) || $_GET[„do‟] != 1) { ?> Are you sure you want to delete this ?
  4. } // SQL chung $sql = “DELETE FROM “ . $_GET[„type‟] . “ WHERE “ . $_GET[„type‟] . “_id = „“ . $_GET[„id‟] . “„ LIMIT 1”; // xuất SQL cho mục đích echo “”; $result = mysql_query($sql) or die(“Invalid query: “ . mysql_error()); ?> Your has been deleted. Index 2. Lưu delete.php vào thư mục chap6. 3. Mở index.php trên trình duyệt. bạn sẽ thấy DELETE những liên kết tiếp sau mỗi film hoặc người như Hình 6.4.1 Hình 6.4.1
  5. 4. Thử xóa film mà bạn đã thêm vào ở bài tập trước bởi việc click vào liên kết DELETE trên hàng “Test” movie name. Bạn sẽ thấy như Hình 6.4.2 . Hình 6.4.2 5. Click vào liên kết “yes” để xác nhân việc xóa và đợi thông báo xác nhận như Hình 6.4.3 Hình 6.4.3 Cách thức hoạt động Ở đây là kế hoạch tiêu diệt 1 tập hợp vô tội của dữ liệu. Đặt nó sang một bên, chúng ta hay xem tập lệnh này hoạt động như thế nào. Đầu tiên, bạn cần hiểu rằng bạn không thể xóa mẩu tin trong cơ sở dữ liệu và phải quên chúng đi. Việc xóa được xem xét cẩn thận. Ví dụ nếu xóa một người từ bảng people, điều này ngăn cản bạn từ việc tìm ra một khả năng có liên quan đến người trong bảng movie. Nếu bạn xóa Jim Carrey từ bảng people, ai sẽ lãnh đạo diễn viên Bruce Almight? Nếu bạn không làm mọi thứ, id của Jim Carrey‟s sẽ còn lại trong mẩu tin và bạn
  6. sẽ có một cơ sở dữ liệu bị sữa đổi. Bạn không muốn điều này đúng không (câu trả lời là không) Để giải quyết vấn đề này thì để chắc rằng bạn luôn có một khóa ngoại trong mẩu tin. Trong đoạn mã sau bạn cập nhật bảng film với giá trị 0 trước khi xóa mẩu tin people. Điều này cũng cho phép bạn kiển tra cách hoạt động của câu lệnh UPDATE SQL. // xóa phần liên quan đến lãnh đạo diễn viên $actor = “UPDATE movie SET movie_leadactor = „0‟ WHERE movie_leadactor = „“ . $_GET[„id‟] . “„“; $result = mysql_query($actor) or die(“Invalid query: “ . mysql_error()); // xóa phần liên quan đến đạo diễn $director = “UPDATE movie SET movie_director = „0‟ WHERE movie_director = „“ . $_GET[„id‟] . “„“; $result = mysql_query($director) or die(“Invalid query: “ . mysql_error()); Trong đoạn mã trước, đặt bất kì một vùng nào trong bảng movie mà có thể chứa một điều rủi ro cho bạn, khi bạn xóa một người. Câu lệnh UPDATE làm việc một cách đơn giản. Nó đặt những vùng lý thuyết với những giá trị lý thuyết mới trong tất cả các mẩu tin theo nhu cầu của câu lệnh WHERE. Bạn có thể hỏi điều gì sẽ xảy ra nếu một người quên đi phần WHERE. Điều này sẽ cập nhật tất cả những mẩu tin trong bảng, mà có thể không có một thứ gì bạn muốn làm trong thực tế . Thứ tự xóa // phát sinh SQL $sql = “DELETE FROM “ . $_GET[„type‟] . “ WHERE “ . $_GET[„type‟] . “_id = „“ . $_GET[„id‟] . “„ LIMIT 1”;
  7. // Xuất SQL cho mục đích biên dịch echo “”; $result = mysql_query($sql) or die(“Invalid query: “ . mysql_error()); Truy vấn DELETE là một đơn vị động, nhưng nó khá dễ hiểu. Bạn không muốn mã hóa câu lệnh SQL cho mỗi loại. Vì vậy bạn sử dụng thông tin thông qua việc truyền biến trong URL để phát sinh ra câu lệnh SQL. Bảng và vùng khóa chính được phát sinh linh hoạt từ loại mục để xóa.
Đồng bộ tài khoản