English 中文(简体)
SQL like SQL - 只处理单字母
原标题:SQL LIKE - Working on single letters only

在 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);
}
最佳回答
$query = $query . " UPPER(description) LIKE  %" . strtoupper($this->escape($keyword)) . "% ";
问题回答

使用 COLLATE 尝试

$query = $query . " description COLLATE utf8_general_ci like  " . $this->escape($keyword) . ")% ";

用于不敏感搜索的大小写

上面应该在里面

$query = $query . " UPPER(description) LIKE CONCAT( % ,UPPER(" . $this->escape($keyword) . "), % )";




相关问题
SQL SubQuery getting particular column

I noticed that there were some threads with similar questions, and I did look through them but did not really get a convincing answer. Here s my question: The subquery below returns a Table with 3 ...

please can anyone check this while loop and if condition

<?php $con=mysql_connect("localhost","mts","mts"); if(!con) { die( unable to connect . mysql_error()); } mysql_select_db("mts",$con); /* date_default_timezone_set ("Asia/Calcutta"); $date = ...

php return a specific row from query

Is it possible in php to return a specific row of data from a mysql query? None of the fetch statements that I ve found return a 2 dimensional array to access specific rows. I want to be able to ...

Character Encodings in PHP and MySQL

Our website was developed with a meta tag set to... <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /> This works fine for M-dashes and special quotes, etc. However, I ...

Pagination Strategies for Complex (slow) Datasets

What are some of the strategies being used for pagination of data sets that involve complex queries? count(*) takes ~1.5 sec so we don t want to hit the DB for every page view. Currently there are ~...

Averaging a total in mySQL

My table looks like person_id | car_id | miles ------------------------------ 1 | 1 | 100 1 | 2 | 200 2 | 3 | 1000 2 | 4 | 500 I need to ...

热门标签