2012-03-25 120 views
0

正在嘗試使用PHP對Postgres數據庫進行查詢,字段名稱是用阿拉伯語寫的,阿拉伯文字母在寫入時接受不同組合的問題,所以如果我想用查詢曾經由用戶編寫的結合,使正確的查詢.... IAM使用次在我的代碼下面的查詢:高級搜索使用PHP

$query = "SELECT name,state,locality,auname,pauname,ST_AsText(the_geom) AS the_geom FROM morganweb.sudanfullattributespoi WHERE name LIKE '%" . $text . "%';"; 

但亙古不變的似乎做了正確的functionality..and它不是也是一個阿拉伯字母的問題...關於如果用戶輸入地名,查詢將不起作用,除非用戶在數據庫中寫入相同的確切短語......所以任何人都可以幫助我解決這個問題嗎?

+0

用戶輸入和存儲數據的一些示例將會很有幫助。 – MichaelRushton 2012-03-25 08:02:52

回答

1

%是通配符,意思是「零個或多個其他字符」。因此,「%ale%」將與「ale」,「male」,「ales」,「male」,「asasasasasale」等匹配。並不意味着它將接受OP中提及的不同組合的字母。

+0

解決大寫字母問題呢?如果我用大寫字母寫出這個詞,查詢失敗?也用阿拉伯語字母,我們有不同組合的單詞例如(مدرسة和مدرسه)你有沒有注意到阿拉伯文字的最後一個字母的區別...以及我想我的代碼瞭解這種差異,並使查詢正確 – 2012-03-25 09:02:48

+0

使用'COLLATE'來強制執行不區分大小寫的字符集。而且,不,我沒有看到最後一封信的區別。我不讀阿拉伯文。此外,MySQL不理解單詞的語義,只理解其字節的語法。如果阿拉伯語單詞可以用兩種或更多不同的方式拼寫,那麼你將遇到困難。您需要一個PHP腳本來計算給定單詞的所有不同變體,然後在查詢中單獨檢查每個變體。 – MichaelRushton 2012-03-25 09:12:00

+0

是啊,我的意思是..我有拼寫差異,用戶可以在任何他們鍵入......並且我的問題在這裏..是使用PHP的搜索應該更具有預測性! – 2012-03-25 09:14:56