我的查询看起来像这样:
$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会简化这个。
答案 0 :(得分:0)
创建你喜欢的地方部分:
where (filepath = :filepath0 or filepath = :filepath1 ....)
你的$ filepaths将是一个数组:
$filepaths = array('foo', 'foo2' ....);
然后使用命名的param循环$ filepaths绑定:
foreach($filepaths as $i => $value)
$stmt->bindValue(':filepath' . $i, $value);