MYSQL PHP通配符

时间:2012-06-29 01:27:56

标签: php mysql

我有一个由AJAX调用的PHP脚本,它不会返回我想看到的通配符结果。无法弄清楚出了什么问题。奇怪的是,我正试图在数据库中查找不寻常的字符,如=.-,;,"等。我正在构建的应用程序是英文字符到盲文查找。

这是我的代码。

$ENG = "english phrase" // Could be Equal sign, dash whatever
$ENG_WILD = $ENG."%"; //Add in wildcard
$result = mysql_query("SELECT * FROM $DB_TABLE WHERE ENG LIKE '$ENG' OR '$END_WILD' ");
$row = mysql_fetch_array( $result );
$result = mysql_query("SELECT * FROM $DB_TABLE WHERE ENG LIKE '$ENG' OR '$END_WILD' ");
if (mysql_num_rows($result)==0) {
    die($Failed . mysql_error());
}

// keeps getting the next row until there are no more to get
while($row = mysql_fetch_array( $result )) {
    // Print out the contents of each row
    echo $box."Dots needed for..".$row['ENG']."..are..".$row['BR_PAR']."..The Rule that applies..".$row['RULE']."</p>".$box_end;
} 

我尝试使用*代替%,但失败了。以下是ENG下的数据库条目示例:= (Nemeth Code: Equal Sign)

如果我使用输入作为一个整体运行上面的脚本,我会得到正确的结果,但如果我使用== (Nemeth运行它,我将得不到任何结果。我不明白 - 我原以为通配符会让我得到我想要的东西。谢谢你们。

2 个答案:

答案 0 :(得分:3)

您的变量为$ENG_WILD,但您在$END_WILD函数中使用mysql_query()。 (EN G vs EN D

如果你解决了这个问题并且仍然无法正常工作,请注意,如果短语出现在该字段的开头,那么最后使用%只会匹配。如果它在开头,中间的任何位置或结尾包含您的词组,请在开头和结尾使用%进行匹配。

答案 1 :(得分:0)

SELECT * FROM $DB_TABLE WHERE ENG LIKE '$ENG' OR '$END_WILD'

不可能做你认为的那样。使用括号,它正在执行此操作:

SELECT * FROM $DB_TABLE WHERE (ENG LIKE '$ENG') OR ('$END_WILD')

当我想你想要的时候:

SELECT * FROM $DB_TABLE WHERE ENG LIKE '$ENG' OR ENG LIKE '$END_WILD'

寻找'this'和'this%'也是多余的,因为第二个也会返回'this'。

你也没有明显的理由两次做同样的查询。我猜我们还没有看到很多代码。

最后,零结果不应该意味着您的查询失败,可能只有该查询没有结果。