Först och främst ser idén om att lagra escaped strängar i databasen konstigt ut. MySQL kan lagra strängar av godtyckliga tecken och kan till och med säkert lagra binära sekvenser.
Nu om kartläggning från riktiga titlar till vackra webbadresser och tillbaka. Idén att konvertera titel till URL-vänlig sträng och sedan tillbaka är inte det vanliga sättet att lösa ditt problem, eftersom det är mycket svårt att göra en sådan konvertering reversibel. Vanligt sätt att lösa detta problem är att ha en separat kolumn i databasen som innehåller boktiteln modifierad för att vara URL-vänlig. Även värden i denna kolumn bör göras unika. Tabellen kan se ut så här:
+-----+-----------------------------+----------------------------+
| BID | book_title | book_title_url |
+-----+-----------------------------+----------------------------+
| 1 | Why Can't I Be You: A Novel | why-can-t-i-be-you-a-novel |
+-----+-----------------------------+----------------------------+
Du bör indexera din tabell efter denna kolumn och använda den istället för book_title
i SQL-fråga i din viewbook.php
skript så här:
SELECT * FROM books WHERE book_title_url='$booktitle'
Där $booktitle
innehåller boktitel mottagen via $_GET['booktitle']
och korrekt escaped för att förhindra SQL-injektioner.
Så dina vackra webbadresser kommer att se ut som http://www.example.com/title/why-can-t-i-be-you-a-novel
och de kommer att skrivas om av Apache till något som http://www.example.com/viewbook.php?booktitle=why-can-t-i-be-you-a-novel
.
Återigen, detta är vanligt sätt hur vackra webbadresser vanligtvis implementeras. hoppas det kommer att fungera för dig också.
För befintliga poster kan du fylla i book_title_url
kolumn av något i stil med detta:
UPDATE books SET book_title_url=REPLACE(REPLACE(REPLACE(book_title, " ", "-"), ":", "-"), "'", "-");