0
我知道有一個嚮導誰可以回答這個...爲什麼此查詢忽略包含USA的字段?
我有一個PHP/MySQL數據庫,列出超過500個葡萄酒。使用表單,網絡訪問者可以通過酒名,國家,年份等搜索數據庫。
我測試了兩(2)個不同的查詢。
我想使用的拒絕返回國家特定的搜索美國,但與西班牙,澳大利亞,意大利,加拿大或智利(甚至美國 - 我測試)沒有問題。當用戶輸入一個酒名或老式等,其發生以匹配美國產品
美國僅會出現。否則,它會把美國視爲不存在。
其他代碼(底部塊)返回所有美國搜索,但不搜索我需要的多個列/項。
此代碼不會找到美國
$cob=mysql_real_escape_string($_POST['user-entry']); // remove the line below to prevent searching multiple terms $cob = '+' . str_replace(' ',' +',$cob); $sql = sprintf ( "SELECT CSPC, Country, Producer, Wine, Year, Price, MATCH (CSPC, Country, Producer, Wine, Year) AGAINST ('&s' IN BOOLEAN MODE) FROM winecellar WHERE MATCH (CSPC, Country, Producer, Wine, Year) AGAINST ('%s' IN BOOLEAN MODE)", $cob, $cob) . $pricerange;
國家特定的搜索該代碼會發現一個國家特定的搜索美國
$cob=mysql_real_escape_string($_POST['user-entry']); $sql="SELECT ID, CSPC, Country, Producer, Wine, Year, Price FROM winecellar WHERE (CSPC LIKE '%" . $cob . "%' OR Country LIKE '%" . $cob ."%' OR Producer LIKE '%" . $cob ."%' OR Wine LIKE '%" . $cob ."%' OR Year LIKE '%" . $cob ."%')" . $pricerange;
- MySQL服務器版本:5.1.65-cll
- Country = varchar(20)
- 國家= NULL沒有
- 全文索引:國家,生產者,葡萄酒,年份
所以我的問題是,什麼是防止多術語代碼(在頂塊)從承認美國是一個有效的查詢?
任何幫助將不勝感激,謝謝你們。
Chris
非常感謝dnagirl,我應該猜到了。我會看看我能做什麼。返回一點.. – user1515259
我改變了FULL TEXT索引以排除國家/地區列,但它仍然沒有正確地找到美國。有關我如何修改PHP查詢的任何想法? - 見上面的代碼,謝謝。 – user1515259
@ user1515259:我建議改變用戶提交國家的方式。讓他們使用選擇列表或獨家自動完成,以便國家可以是一個確切的而不是模糊的比較。然後你可以使用'WHERE country ='USA''。 – dnagirl