1

AJAXによって呼び出されるphpスクリプトがありますが、表示したいワイルドカードの結果が返されません。何が悪いのか理解できません。奇妙なことに、DB内の珍しい文字などを検索しようとしています。作成し=.-,;,"ているアプリは、英語の文字から点字への検索です。

これが私のコードです。

$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_WILDしていますmysql_query()。(ENGEND

これを修正してもまだ機能しない%場合は、最後に使用すると、フレーズがそのフィールドの先頭にある場合にのみ一致することに注意してください。%フレーズが最初、途中、または最後に含まれている場合は、最初と最後の両方で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%' を探すのも冗長です。2 番目も 'this' を返すからです。

また、明確な理由もなく、まったく同じクエリを 2 回実行しています。私たちが見ていないコードがたくさんあると思います。

最後に、結果がゼロであっても、クエリが失敗したという意味ではありません。そのクエリの結果がない可能性があります。

于 2012-10-26T13:59:44.840 に答える