sql >> Databasteknik >  >> RDS >> Mysql

Apostrof och kolon i vackra länkar

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, " ", "-"), ":", "-"), "'", "-");


  1. Multi_Curl med värden från mysql-kolumnen

  2. Mysql summafråga som returnerar felaktigt resultat när du använder flera joins

  3. MySQL:Skapar tabell med FK-fel (fel nr 150)

  4. PHP:MySQL-fråga duplicerar uppdatering utan anledning