sql >> Database >  >> RDS >> Mysql

Apostrofs en dubbele punten in Pretty Links

Allereerst ziet het idee om escaped strings op te slaan in de database er vreemd uit. MySQL kan reeksen willekeurige tekens opslaan en kan zelfs veilig binaire reeksen opslaan.

Nu over het in kaart brengen van echte titels naar mooie URL's en terug. Het idee om de titel om te zetten in een URL-vriendelijke tekenreeks en dan terug is niet de gebruikelijke manier om uw probleem op te lossen, omdat het erg moeilijk is om een ​​dergelijke conversie omkeerbaar te maken. De gebruikelijke manier om dit probleem op te lossen is om een ​​aparte kolom in de database te hebben die de boektitel bevat die is aangepast om URL-vriendelijk te zijn. Ook waarden in deze kolommen moeten uniek gemaakt worden. De tabel kan er als volgt uitzien:

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

U moet uw tabel indexeren aan de hand van deze kolommen en deze gebruiken in plaats van book_title in SQL-query in uw viewbook.php script als dit:

SELECT * FROM books WHERE book_title_url='$booktitle'

Waar $booktitle bevat boektitel ontvangen via $_GET['booktitle'] en correct ontsnapt om SQL-injecties te voorkomen.

Je mooie URL's zien er dus uit als http://www.example.com/title/why-can-t-i-be-you-a-novel en ze zullen door Apache worden herschreven tot iets als http://www.example.com/viewbook.php?booktitle=why-can-t-i-be-you-a-novel .

Nogmaals, dit is een gebruikelijke manier waarop mooie URL's meestal worden geïmplementeerd. hoop dat het ook voor jou zal werken.

Voor bestaande records kunt u book_title_url . invullen kolom door zoiets als dit:

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


  1. C# Geparametriseerde Query MySQL met `in` clausule

  2. Hoe maak je twee kolommen voor automatisch ophogen in MySQL?

  3. Hoe sorteer ik een mysql-kolom met gegevens in Bytes KB MB GB?

  4. meerdere bestandsindelingen uploaden naar een server met behulp van jsp en het pad opslaan in de database