2013-01-06 47 views
1

我有一個書名數據庫。SQL:撇號在DB記錄中,但不在查詢字符串中

我根據頁面URL中的查詢字符串查詢數據庫。

因此,例如,在有一本名爲「Mike's Book」的書的情況下,查詢字符串將是「mikes-book」。在將變量傳遞給MYSQL查詢之前,我會執行一些基本的清理,將'mikes-book'變成'Mikes Book'。

查詢失敗,因爲查詢字符串不包含與DB記錄匹配的撇號。

現在,我使用這個查詢:

"SELECT title FROM books WHERE title LIKE '$query_title'" 

如果沒有撇號是存在於數據庫記錄,記錄是否正確返回。但是,如果數據庫記錄中有撇號,則返回0個結果。

關於我能在這裏做什麼的任何想法?

回答

1

問題出現是因爲你有一個有損的轉換,你試圖顛倒(當你創建你的URL時,這個轉換顯然被剝離了)。解決這個問題的簡單方法是將轉換後的值保存在數據庫中,然後查詢該值(mikes-book)。當您更新名稱時,還要同時更新轉換後的值。

您也可以重新實現SQL中的轉換函數,並將每行與轉換後的值進行比較,但我強烈建議避免這樣做。 :-)

+0

這是一個好主意 - 我將添加一個存儲轉換值的數據庫列。謝謝! – Duplosion

0

一個解決方案是使用SOUNDEX,但我認爲這是一個昂貴的操作。

相關問題