Mysql
 sql >> Base de données >  >> RDS >> Mysql

Apostrophes et deux-points dans Pretty Links

Tout d'abord, l'idée de stocker des chaînes échappées dans la base de données semble étrange. MySQL est capable de stocker des chaînes de caractères arbitraires et peut même stocker en toute sécurité des séquences binaires.

Passons maintenant au mappage de vrais titres vers de jolies URL et inversement. L'idée de convertir le titre en chaîne conviviale pour l'URL, puis de revenir en arrière n'est pas la manière courante de résoudre votre problème, car il est très difficile de rendre une telle conversion réversible. La façon habituelle de résoudre ce problème est d'avoir une colonne séparée dans la base de données qui contient le titre du livre modifié pour être compatible avec les URL. De plus, les valeurs de ces colonnes doivent être rendues uniques. Le tableau pourrait ressembler à ceci :

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

Vous devez indexer votre table par ces colonnes et l'utiliser à la place de book_title dans une requête SQL dans votre viewbook.php script comme celui-ci :

SELECT * FROM books WHERE book_title_url='$booktitle'

$booktitle contient le titre du livre reçu via $_GET['booktitle'] et correctement échappé pour empêcher les injections SQL.

Ainsi, vos jolies URL ressembleront à http://www.example.com/title/why-can-t-i-be-you-a-novel et ils seront réécrits par Apache en quelque chose comme http://www.example.com/viewbook.php?booktitle=why-can-t-i-be-you-a-novel .

Encore une fois, c'est la façon dont les jolies URL sont généralement implémentées. j'espère que cela fonctionnera pour vous aussi.

Pour les enregistrements existants, vous pouvez remplir book_title_url colonne par quelque chose comme ceci :

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