0

次のようなクエリがあります。

$query = "SELECT icon.web_id, 
image.web_id, image.base64_data, 
theme.title, theme.themepath, 
theme.description, filepath.filepath, 
filepath.filename
FROM theme

INNER JOIN icon ON icon.fk_theme_id = theme.id
INNER JOIN filepath ON icon.fk_filepath_id = filepath.id
INNER JOIN image ON icon.fk_image_id = image.id
LEFT JOIN junction_icon_icontag ON junction_icon_icontag.fk_icon_id = icon.id

WHERE 1
" . $filepaths . " 
" . $themes . "
" . $icontags . "

GROUP BY icon.id";

変数には、「AND (filepath = 'foo' OR filepath = 'foo2')」のような一致基準が含まれています。

これを準備済みステートメントに変換したいと思います。可変数の基準を使用するにはどうすればよいですか? 例で見たものから、それらを ? に置き換える必要があります。しかし、クエリが構築される前にいくつあるかわからないため、追加する必要がある疑問符の数がわかりません。現在、巨大な switch ステートメントのすべてのパラメーターをチェックして、それらを検証しています。PDOがこれを簡素化することを望んでいました。

4

1 に答える 1

0

次のように where 部分を作成します。

where (filepath = :filepath0 or filepath = :filepath1 ....)

あなたの $filepaths は配列になります:

$filepaths = array('foo', 'foo2' ....);

次に、名前付きパラメーターを使用して $filepaths バインディングをループします。

foreach($filepaths as $i => $value)
    $stmt->bindValue(':filepath' . $i, $value);
于 2013-07-26T13:44:16.477 に答える