2014-08-29 1 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 ....'입니다. 왜냐하면이 필드에 별칭을 사용하지 않았기 때문에 Ende Neu의 대답을 살펴 보시기 바랍니다. – Sal00m

답변

2

그 자체를 반환하지 않는 것, 그것은 배열의 키는 CONCAT_WS 부분에 별칭을 할당하려고입니다 :

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

백만 년 동안 나는 생각하지 않았습니다. 그것을 해결했지만, 그렇습니다, 그것은 완벽하게 이해됩니다. Ende와 Sal00m 감사합니다. – Shaun

+0

반갑습니다. –

관련 문제