2014-09-09 5 views
0

MySQL과 PHP를 사용하고 있습니다.bind_param이 쿼리에서 mysql을 사용하여 목록의 첫 번째 값만 받아들입니다.

bind_param을 사용하여 쿼리를 매개 변수화하려고했습니다. 이제 매개 변수가있는 IN 쿼리에 정수 목록을 전달해야합니다.

select id,date, 
    sum(value) as distance , 
    (select number from table2 where id=id) as Number 
from Table1 where id in (1777,1778,1779) 

를하지만 목록 (1777)의 첫 번째 값에 대한 결과만을 반환 :

나는 아래의 쿼리를 시도했다.

목록의 모든 항목 (1777,1778,1779)에 대한 결과를 얻으려면 어떻게해야합니까?

+0

무엇이'id = id'입니까? 역시이 자리 표시 자입니까? – Ghost

+0

아니요, 선택 직후에 언급 된 ID입니다. 매개 변수화 된 쿼리에서 나는 place holder를 사용했다. 동등한 매개 변수화 된 쿼리는 다음과 같습니다. select id, date, sum (value) from distance, (table2에서 id = id 인 번호 선택) Table1의 Number는? – Rakesh

+0

하위 쿼리가 아닌 조인을 사용하는 것이 좋습니다. –

답변

0

예 : GROUP BY을 사용해야합니다.

SELECT 
    id, 
    date, 
    sum(value) as distance , 
    (SELECT number FROM table2 WHERE id=id) as Number 
FROM Table1 
WHERE 
    id in (1777,1778,1779) 
GROUP BY id 

희망이 있습니다.

+0

우리는이 결과를 얻고 있습니다. 그러나 bind_param을 사용할 때 첫 번째 ID (1777)에 대한 결과를 얻지 못합니다. 예 : $ a = '1777,1778,1779'; $ sqlobj-> bind_param ('i', $ a); 우리는 단지 1777에 대한 결과를 얻고 있습니다 – Rakesh

+0

** 값 목록 전체에 하나의 매개 변수를 사용할 수 없습니다 **. ... IN (?,?,?)과 같은 쿼리를 사용하고 3 개의 매개 변수를 바인딩해야합니다. – Frazz

관련 문제