2012-03-25 100 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