2017-07-25 18 views
2

パラメータ化されたpostgresqlクエリでは、行の値または提供されたパラメータを返す方法を教えてください。行の値postgresに最大または最小値を取得

私は3つの列で(我々はfooそれを呼び出します)テーブルを持っている:私は、maxとminは、私が提供天井や床を有するように、行を選択したい

idmaximumminimumそれら。直接PostgreSQLでは、私はこのように選択することができるであろう:

SELECT 
    id, 
    GREATEST(minimum, 5), 
    LEAST(maximum, 10) 
FROM foo 

だから、これは行ごとに、5と10の間のみ値を返します。私のPHPコードで使用するためにこれを変換する際

しかし:

$floor = 5; 
$ceiling = 10; 
$query = 'SELECT id, GREATEST(minimum, $2), LEAST(maximum, $1) FROM foo'; 
$parameters = [ $ceiling, $floor]; 
$result = pg_query_params($query, $parameters); 

パラメータは、クエリのWHERE句にする必要がありますので、これは動作しません。パラメータを適切に渡せるようにクエリを記述するにはどうすればよいですか?参考のため

$floor = 5; 
$ceiling = 10; 

$query = <<<SQL 
SELECT 
    id, 
    GREATEST(minimum, $floor), 
    LEAST(maximum, $ceiling) 
FROM 
    foo 
SQL; 

$result = pg_query_params($query); 

は、以下を参照してください:

答えて

0

あなたはヒアドキュメントを使用することができ

+0

しかし、それは私がパラメータを使用してから、SQLインジェクションからの保護を失うことを意味します。 – Schleis

+0

ユーザーによって提供された値、またはそれらが修正されていますか? – localheinz

+0

ユーザーによって提供されます。私の質問は整数を使用していたが、私はもっと一般的に知りたい。もし私が文字列を使って同様のことをする必要があれば。私は私の例のように 'intval'を使うことはできません。 – Schleis

関連する問題