Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Apostrophes và Colons trong Pretty Links

Trước hết, ý tưởng lưu trữ các chuỗi thoát trong cơ sở dữ liệu có vẻ kỳ lạ. MySQL có thể lưu trữ các chuỗi ký tự tùy ý và thậm chí có thể lưu trữ các chuỗi nhị phân một cách an toàn.

Bây giờ về ánh xạ từ tiêu đề thực đến URL đẹp và ngược lại. Ý tưởng chuyển đổi tiêu đề thành chuỗi thân thiện với URL và sau đó quay lại không phải là cách phổ biến để giải quyết vấn đề của bạn, vì rất khó để thực hiện chuyển đổi đó có thể hoàn nguyên. Cách thông thường để giải quyết vấn đề này là có cột riêng biệt trong cơ sở dữ liệu có chứa tên sách được sửa đổi để thân thiện với URL. Ngoài ra, các giá trị trong cột này phải là duy nhất. Bảng có thể trông như thế này:

+-----+-----------------------------+----------------------------+
| BID | book_title                  | book_title_url             |
+-----+-----------------------------+----------------------------+
|   1 | Why Can't I Be You: A Novel | why-can-t-i-be-you-a-novel |
+-----+-----------------------------+----------------------------+

Bạn nên lập chỉ mục bảng của mình theo các cột này và sử dụng nó thay vì book_title trong truy vấn SQL bên trong viewbook.php của bạn tập lệnh như thế này:

SELECT * FROM books WHERE book_title_url='$booktitle'

Ở đâu $booktitle chứa tên sách nhận được qua $_GET['booktitle'] và thoát đúng cách để ngăn chặn việc đưa SQL vào.

Vì vậy, các URL đẹp của bạn sẽ giống như http://www.example.com/title/why-can-t-i-be-you-a-novel và chúng sẽ được Apache viết lại thành một thứ gì đó như http://www.example.com/viewbook.php?booktitle=why-can-t-i-be-you-a-novel .

Một lần nữa, đây là cách phổ biến mà các URL đẹp thường được triển khai. hy vọng nó cũng sẽ hiệu quả với bạn.

Đối với các bản ghi hiện có, bạn có thể điền book_title_url cột bởi một cái gì đó như thế này:

UPDATE books SET book_title_url=REPLACE(REPLACE(REPLACE(book_title, " ", "-"), ":", "-"), "'", "-");


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Làm cách nào để chèn dữ liệu NULL vào cơ sở dữ liệu MySQL bằng Python?

  2. Sử dụng SSHTunnelForwarder để kết nối với db MySQL qua SSH

  3. Cách nhận dữ liệu tuần hiện tại trong MySQL

  4. Sự cố với JPA, EclipseLink và mysql phân biệt chữ hoa chữ thường

  5. chèn vào cơ sở dữ liệu từ trường văn bản trùng lặp nếu không trống php sql