2012-06-29 57 views
1

我有一個由AJAX調用的php腳本,它不會返回我希望看到的通配符結果。無法弄清楚什麼是錯的。奇怪的是我試圖尋找數據庫中的不尋常的字符,如=.-,;,"等。我正在建立的應用程序是盲文查找的英文字符。MYSQL 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運行它,我會得到任何結果的腳本。我不明白 - 我會認爲通配符會讓我得到我想要的。多謝你們。

回答

3

您的變量是$ENG_WILD,但您在mysql_query()函數中使用的是$END_WILD。 (EN VS EN d

如果解決這個問題,它仍然沒有工作,請記住,如果短語來在該領域的開始,在結束使用%將只匹配。如果開頭和結尾都包含您的詞組,則可以在開頭和結尾都使用%

+0

尼斯Catch ...感覺像一個完整的Tard,但問題仍然存在 – CertDoctor

+0

等待一分鐘 如果我把%手動放入POST搜索字段,它工作正常;那麼當PHP在SQL的標籤上發生的一些事情並不能正確地識別它時呢?我是否需要以某種特殊的方式將PHP聲明爲PHP? – CertDoctor

+0

因此,如果我手動將th%放入通過POST傳遞給PHP的字符串中,我會得到正確的響應TH&盲文符號。 – CertDoctor

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' 

這也是多餘的去尋找「這個」和「此%」,因爲第二個將返回「這個」以及。

你也做了完全相同的查詢兩次,沒有明顯的原因。我猜測有很多我們沒有看到的代碼。

最後,結果爲零並不意味着您的查詢失敗,可能沒有查詢結果。