2

我有这个脚本:

$db = mysql_connect($hostname, $db_user, $db_password);
mysql_select_db($database,$db) or die( "Unable to select database");
mysql_query("set names 'utf8'");

$wordy = "pate";

$query = mysql_query("SELECT DISTINCT * FROM $db_table WHERE word LIKE '[pate]' ORDER BY word DESC");
$num = mysql_numrows($query); $i=0; 

while ($i < $num) {
    $word = mysql_result($query,$i,"word");

    echo $word." ";
    $i++;
}

$db_table包含英文单词。我想呼应所有可能的字谜;在这种情况下,它应该 echo tape pate peat。我可以使用什么查询来执行此操作?

http://msdn.microsoft.com/en-us/library/ms179859.aspx <- 这是一个描述

4

2 回答 2

2

我认为首先你必须重新排列单词中的所有字母以形成一个数组

然后做一个 sql 查询,如:

SELECT DISTINCT * FROM $db_table WHERE word in ($array ) ORDER BY word DESC

有另一个想法:

你可以做类似...

SELECT DISTINCT * FROM $db_table WHERE word like '%$wordy[0]%' AND like '%$wordy[1]%' AND like '%$wordy[2]%' AND like '%$wordy[4]%' ORDER BY word DESC

我可以建议您使用的评论

长度(字)= strlen($字)

于 2011-07-23T12:15:14.060 回答
2

如果您可以修改包含字典的表,请运行一个脚本,该脚本为每个条目添加一个字段,其中包含按字母顺序排列的单词和其中包含的字母。然后,您可以按字母顺序将要搜索的单词中的字母类似地放入并查找匹配项。

Tape, pate 和 peat 按字母顺序看起来都像“aept”,那么你可以

$query = mysql_query("SELECT * FROM $db_table WHERE alpha = 'aept' ORDER BY word DESC");
于 2011-07-23T12:47:39.913 回答