2009-07-21 6 views
4

を持つプリペアドステートメント私はプリペアドステートメントを使用して最適化しようとしている時代の1000年代に実行されるクエリがあります:私は正常にクエリを実行するとSQLite - 制限はありますか?バグ?句

$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();

関連する問題