1

我有一个由 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 下 DB 中的条目示例:= (Nemeth Code: Equal Sign)

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

4

2 回答 2

3

您的变量是$ENG_WILD,但您$END_WILDmysql_query()函数中使用。(英文G与 EN D

如果您解决了这个问题,但它仍然无法正常工作,请记住,%只有当短语出现在该字段的开头时,最后的 using 才会匹配。%如果它在开头、中间的任何位置或结尾包含您的短语,则在开头和结尾都使用 a来匹配。

于 2012-06-29T01:33:13.823 回答
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'。

您还无缘无故地执行了两次完全相同的查询。我猜有很多我们没有看到的代码。

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

于 2012-10-26T13:59:44.840 回答