2012-06-27 6 views
0

PHP 페이지에서 두 개의 문자열을 내파하기 위해 PDO 방법을 사용하고 있습니다. (그래프를 만들려면 긴 이야기!), 필터하는 방법을 모르겠습니다. MySQL의 테이블 구조는 다음과 같습니다.PDO SQL 쿼리 필터링

열 이름 : 항목 (투표 대상 항목의 이름); nvote (이 항목의 수를 받았습니다); 날짜 (투표의 날짜)

이것은 내가 지금까지 무엇을 가지고 :

$stmt1 = $db->prepare("SELECT date FROM vote"); 
$stmt1->execute(); 

$stmt2 = $db->prepare("SELECT nvote FROM vote"); 
$stmt2->execute(); 

$line1 = implode(',', $stmt1->fetchAll (PDO::FETCH_COLUMN)); 
$line2 = implode(',', $stmt2->fetchAll (PDO::FETCH_COLUMN)); 

(1 호선 내 그래프의 x 축를 생성, 2 호선 (가) 작성하는 y 축)

내 그래프의 문자열을 생성하는 데 매우 효과적입니다. 항목의 이름이 투표하고, 그래서 내가 (이 경우 $nameofitem)를 var에 의해 필터링 (이하 "항목"열 "에서) 다음을 필터링 할 수 있습니다 방법

? 나는 그것을 얻이 수없는 것 작동합니다.

+1

하나의 sql-query와 SQL-query에서 WHERE-statement를 사용하여 필터링하는 것이 가능하지 않습니까? – flec

답변

1
$params = array(':value' => 'Hello World'); 
$stmt1 = $db->prepare("SELECT date FROM vote WHERE item = :value ORDER BY date"); 
$stmt1->execute($params); 

$stmt2 = $db->prepare("SELECT nvote FROM vote WHERE item = :value ORDER BY date"); 
$stmt2->execute($params); 

$line1 = implode(',', $stmt1->fetchAll (PDO::FETCH_COLUMN)); 
$line2 = implode(',', $stmt2->fetchAll (PDO::FETCH_COLUMN)); 

을 키 배열을 통과 할 때 실행에 의해 바인딩 된 매개 변수를 사용하여 SQL 쿼리에 WHERE 조건을 추가하고있다. 나는 또한 당신을 위해 거기 주문 문을 추가

주 그것 없이는 결과 순서가 보장되지 않습니다. 이는 그래프에서 본 포인트가 연관 될 수 있음을 의미합니다 잘못된 지점으로. 가능하면 날짜가 최선의 선택이 아닌 고유 한 키를 사용하십시오. 또는 단일 쿼리로 모든 것을 가져 와서 사후 처리로 목록을 작성할 수 있습니다.

+0

젠장 ... 그건 서사시적인 프로그래밍입니다! 참으로 대단히 감사합니다. – user1259798

+0

그것은 지나치게 진술 일 수 있습니다. 계속 배우십시오. –