1

次のクエリを使用しています。

SELECT foo, bar FROM mytable WHERE foo=:foo AND userid=:userid;

AND userid=:userid「管理者」クラスのユーザーの一部を解放したい(彼らfooはすべてのユーザーの s を見ることができる)。

PDO 準備済みステートメントを使用してそれを行う方法はありますか? または、文字列連結を使用して 2 つの異なるクエリを作成する必要がありますか? なんかのLIKE構造も考えたのですが、ちょっとゴツゴツした感じです。

4

1 に答える 1

0

いいえ、できません。

ただし、2 つの準備済みステートメントを用意し、ロジックを使用してそれらを選択することができます。

$queryWithUser = $pdo -> prepare ('SELECT foo, bar FROM mytable WHERE foo=:foo AND userid=:userid;');
$queryWithoutUser = $pdo -> prepare ('SELECT foo, bar FROM mytable WHERE foo=:foo;');

$result = $doQueryWithUser?
    $queryWithUser -> execute (array ('foo' => 123, 'userid' => 456)):
    $queryWithoutUser -> execute (array ('userid' => 456));

または、特定の時間に必要な準備済みステートメントをオンデマンドで生成できます。

$queryString = 'SELECT foo, bar FROM mytable WHERE foo=:foo';
if ($doQueryWithUser) {
    $queryString .= ' AND userid=:userid';
}
$query = $pdo -> prepare ($queryString . ';');
于 2013-05-15T12:00:17.990 に答える