在 MySQL 上我有一个 SQL 类似查询, 它运行在我的本地开发服务器上, 运行正常, 但是在生产服务器上它只工作在单字母上, 也就是说, 如果我输入一个超过一个字母的单词, 它返回没有结果 。
任何想法 为什么和如何我 可能能够修复它?
提前感谢您
/**
* Searches all current vehicle listings for matches to given search string.
* @param string - Search keyword(s). Warning: If search string is empty all current vehicles are returned.
* @return array - Resulting table rows containing vin, imageFile, description, kms, auctioneerName, city, time.
*/
public function searchVehicles($search) { //
// Build up initial SQL query. Sub query returns all current vehicles
$query = "SELECT * FROM (SELECT vehicles.auctionId, vin, imageFile, CONCAT_WS( , year, makeName, modelName) as description, kms, auctioneerName, city, time FROM vehicles, models, makes, auctions, auctioneers, locations WHERE time > NOW() AND vehicles.modelId = models.modelId AND models.makeId = makes.makeId AND vehicles.auctionId = auctions.auctionId AND auctions.auctioneerId = auctioneers.auctioneerId AND auctions.locationId = locations.locationId) AS results WHERE";
$keywords = explode(" ", $search); // Break search into keywords
// Loop through each keyword in the search to build up SQL query
$firstLoop = true; // Initial loop flag
foreach ($keywords as $keyword) {
if (!$firstLoop) { // Check if this is not the first loop
$query = $query . " AND"; // Then: Add extension statement to query
} else {$firstLoop = false;} // Otherwise: Set flag to false
// Add each keyword search to the query ensuring case insensitivity by converting to uppercase
$query = $query . " UPPER(description) LIKE UPPER( %" . $this->escape($keyword) . "% )";
}
// Add ordering SQL
$query = $query . " ORDER BY time";
// Run query and return results (if any)
return $this->query($query);
}