我有一个由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
运行它,我将得不到任何结果。我不明白 - 我原以为通配符会让我得到我想要的东西。谢谢你们。
答案 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'。
你也没有明显的理由两次做同样的查询。我猜我们还没有看到很多代码。
最后,零结果不应该意味着您的查询失败,可能只有该查询没有结果。