2009-07-21 4 views
4

을 갖는 문 준비 :SQLite - 제한 사항? 곤충? 내가 준비된 문을 사용하여 최적화하기 위해 노력하고있어 시간의 1000를 실행하는 쿼리가 절

$query = "SELECT day, ticker, SUM(score*mod) as shares FROM indicators, modifiers WHERE indicators.dex=modifiers.dex AND ticker='$t' GROUP BY day, ticker HAVING shares>=$s"; 

나는 일반적으로 쿼리를 실행하면 :

$transactions = $dbm->query($query); 

I을 원하는 결과 세트를 얻는다. 내가 그렇게 (

$stmt->execute(array($t, 100)); 

HAVING 절에 명시된 조건을 필터링 할 수없는 것 같습니다 : 나는 준비된 문

$stmt = $db->prepare("SELECT day, ticker, SUM(score*mod) as shares FROM indicators, modifiers WHERE indicators.dex=modifiers.dex AND ticker=? GROUP BY day, ticker HAVING shares>=?"); 

실행으로 변환 그러나

, 주식이 100 미만인 경우 결과를 얻는다.)

이것은 SQLite의 버그/제한 사항입니까? 아니면 잘못된 것입니까?

준비된 문으로 변환 할 때 내 모든 다른 쿼리가 잘 작동

...

+2

또한 준비된 명령문에 공유 수를 하드 코딩하려고 시도했지만 정상적으로 작동했습니다. 이것은 변수 일 때만 발생합니다. –

+0

당신은 PDO_SQLITE를 사용하고 있습니까? – hobodave

+0

예, sqlite3에 pdo sqlite 확장자를 사용하고 있습니다. –

답변

1

시도 : $ stmt-> bindParam (2, $ 공유, PDO :: PARAM_INT); $ stmt-> execute();

관련 문제