我希望能够将某些内容传递给SQL查询,以确定是否只选择某个列为null的那些查询.如果我只是构建一个查询字符串而不是使用绑定变量,我会做类似的事情:
if ($search_undeleted_only)
{
$sqlString .= " AND deleted_on IS NULL";
}
Run Code Online (Sandbox Code Playgroud)
但我想使用绑定查询.这会是最好的方式吗?
my $stmt = $dbh->prepare(...
"AND (? = 0 OR deleted_on IS NULL) ");
$stmt->execute($search_undeleted_only);
Run Code Online (Sandbox Code Playgroud)
是的; 一个相关的技巧是,如果您有 X 个潜在的过滤器(其中一些是可选的),就是让模板 say " AND ( ?=-1 OR some_field = ? ) ",并创建一个特殊的函数来包装执行调用并绑定所有第二个 ? 。(在本例中,-1 是一个特殊值,表示“忽略此过滤器”)。
Paul Tomblin 的更新:我编辑了答案以包含评论中的建议。
| 归档时间: |
|
| 查看次数: |
362 次 |
| 最近记录: |