Я знаю, что это не новый вопрос, но у меня несоответствие между результатами при выполнении одних и тех же запросов с различными параметрами:
Проблема начинается с этого запроса (копия вставлена из журнала сценариев):
SELECT id
FROM Resources
WHERE group_id IN (2,3,1)
AND MATCH (title, body) AGAINST ('diseño' IN NATURAL LANGUAGE MODE)
LIMIT 10
, который ничего не выводит, num_rows равен 0, и любые попытки его анализа не удаются.Любопытно, что если я вставлю тот же запрос в phpMyadmin, он выдаст 9 результатов.
теперь это рабочий запрос из точно такой же функции и процесса:
SELECT id
FROM Resources
WHERE group_id IN (2,3,1)
AND MATCH (title, body) AGAINST ('moda' IN NATURAL LANGUAGE MODE)
LIMIT 10
Это выдает 10 результатов.и работает нормально.
Это мой код:
public function loadFromSearch($searchStr, $resourceGroupIdList){
//$searchStr2 = NaturalLanguageHelper::mb_replace('n', 'ñ', $searchStr);
$dbConn = new DbConnection();
$query = $dbConn->escapeQuery("SELECT {$this->DB_ID} FROM {$this->DB_TABLE_NAME} WHERE {$this->DB_GROUP_ID} IN ({$resourceGroupIdList}) AND MATCH ({$this->DB_FULLTEXT_INDEX}) AGAINST ('%s' IN NATURAL LANGUAGE MODE) LIMIT 10", $searchStr);
Log::echo("\n". $query . "\n\n");
$result = $dbConn->newQuery($query);
return $this->fillArrayFromResult($result, array('title'));
}
Это вызывает эту функцию:
protected function fillArrayFromResult($result, $column_list_array = false) {
Log::echo("\nnum rows: {$result->num_rows}\n\n");
if($result->num_rows == 0)return false;
while($row = $result->fetch_array(MYSQLI_NUM)){
Log::echo("\n\nGot Row! Creating instance of ".$this->class."...\n");
$instance = new $this->class();
Log::echo("\n\n Instance OK\n");
if(!is_array($column_list_array))
$instance->loadFromDb($row[0]);
else
$instance->loadFromDbPartial($column_list_array, $row[0]);
array_push($this->collection, $instance);
}
$result->free();
return true;
}
А вот функция запроса:
public function newQuery($query){
if ($result = $this->mysqli->query($query))
return $result;
else
ErrorHandler::throwError("MySQL Query Error: (" . $this->mysqli->errno . ") " . $this->mysqli->error);
}
Есть идеи, что происходит?и заранее спасибо!