Mysql
 sql >> база данни >  >> RDS >> Mysql

Апострофи и двоеточия в красиви връзки

На първо място, идеята за съхраняване на екранирани низове в базата данни изглежда странна. MySQL може да съхранява низове от произволни знаци и дори може безопасно да съхранява двоични поредици.

Сега за картографирането от истински заглавия към красиви URL адреси и обратно. Идеята да преобразувате заглавието в удобен за URL низ и след това обратно не е често срещаният начин за решаване на проблема ви, защото е много трудно да направите такова преобразуване обратимо. Обичайният начин за решаване на този проблем е да имате отделна колона в базата данни, която съдържа заглавие на книгата, модифицирано така, че да е подходящо за URL адрес. Също така стойностите в тази колона трябва да бъдат направени уникални. Таблицата може да изглежда така:

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

Трябва да индексирате таблицата си по тези колони и да я използвате вместо book_title в SQL заявка във вашия viewbook.php скрипт като този:

SELECT * FROM books WHERE book_title_url='$booktitle'

Където $booktitle съдържа заглавие на книга, получено чрез $_GET['booktitle'] и правилно екраниран, за да предотврати SQL инжекции.

Така че вашите красиви URL адреси ще изглеждат като http://www.example.com/title/why-can-t-i-be-you-a-novel и те ще бъдат пренаписани от Apache на нещо като http://www.example.com/viewbook.php?booktitle=why-can-t-i-be-you-a-novel .

Отново, това е често срещан начин как обикновено се прилагат красиви URL адреси. надявам се, че ще работи и за вас.

За съществуващи записи можете да попълните book_title_url колона от нещо подобно:

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. Скрипт за проверка на състоянието на репликацията на MySQL

  2. Как да четете и нулирате AUTO_INCREMENT в MySQL

  3. Функция MySQL POW() – Повишаване на стойност до степента на друга стойност

  4. Как да изтрия всеки запис след n-тия ред в mysql?

  5. Как да свържа MySQL Workbench към Amazon RDS?