2
パラメータ化されたpostgresqlクエリでは、行の値または提供されたパラメータを返す方法を教えてください。行の値postgresに最大または最小値を取得
私は3つの列で(我々はfoo
それを呼び出します)テーブルを持っている:私は、maxとminは、私が提供天井や床を有するように、行を選択したい
、id
、maximum
minimum
それら。直接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);
は、以下を参照してください:
しかし、それは私がパラメータを使用してから、SQLインジェクションからの保護を失うことを意味します。 – Schleis
ユーザーによって提供された値、またはそれらが修正されていますか? – localheinz
ユーザーによって提供されます。私の質問は整数を使用していたが、私はもっと一般的に知りたい。もし私が文字列を使って同様のことをする必要があれば。私は私の例のように 'intval'を使うことはできません。 – Schleis