2014-08-29 95 views
0

我以前沒有遇到過這個。這裏的查詢:爲什麼這個查詢返回結果中的一部分?

$query="SELECT 
    CONCAT_WS(' ', 
     TRIM(SUBSTRING_INDEX(
      SUBSTRING(document, 1, INSTR(document, 'Quickstart') - 1), 
      ' ', 
      -8) 
     ),'Quickstart', 
     TRIM(SUBSTRING_INDEX(
      SUBSTRING(document, INSTR(document, 'Quickstart') + LENGTH('Quickstart')), 
      ' ', 
      5) 
     ) 
) 
FROM documents WHERE MATCH(document) 
AGAINST('Quickstart' IN BOOLEAN MODE)"; 

而這裏的結果數組:

[0] => Array 
    (
     [CONCAT_WS(' ', 
     TRIM(SUBSTRING_INDEX(
      SUBSTRING(document, 1, INSTR(document, 'Quickstart') - 1), 
      ' ', 
      -8) 
     ),'Quickstart', 
     TRIM(SUBSTRING_INDEX(
      S] => 
Quickstart for set up. 1. Register your 
    ) 

它返回的最後一部分似乎是正確的:

Quickstart for set up. 1. Register your 

但爲什麼查詢自己回來了?這裏的PHP:

if (!$result = mysql_query($query)) send(mysql_error(),"e"); 
$hitArray=array();  
while ($row=mysql_fetch_array($result, MYSQL_ASSOC)) { $hitArray[]=$row; } 

謝謝你看看。

+0

一些解釋:當你執行一個查詢,查詢返回的關鍵領域的名稱在陣列中。在你的情況下,字段的名稱是'CONCAT_WS ....',因爲你沒有使用這個字段的別名,只是看看恩德諾的答案 – Sal00m 2014-08-29 08:41:31

回答

2

它不返回本身,它的陣列中的關鍵,儘量別名分配給CONCAT_WS部分:

SELECT 
CONCAT_WS(...) as concatenated 
FROM documents WHERE MATCH(document) 
AGAINST('Quickstart' IN BOOLEAN MODE) 
+0

在一百萬年,我不認爲我會永遠解決了這個問題,但是,這是非常有意義的。謝謝Ende和Sal00m。 – Shaun 2014-08-29 11:17:48

+0

不客氣。 – 2014-08-29 12:08:34

相關問題