首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >带有PDO准备和绑定语句的条件查询

带有PDO准备和绑定语句的条件查询
EN

Stack Overflow用户
提问于 2015-10-08 08:07:26
回答 1查看 2.2K关注 0票数 0

我正在将所有查询从mysql转换为PDO,在此过程中我发现了一个条件查询,如下所示

代码语言:javascript
运行
复制
if (isset($parameters['searchTerm'])) {
    $where =" And title LIKE '%{$parameters['searchTerm'] }%'";
} 

$sql = "Select * from table data Where tableId = 5 {$where} ";

当我试图在PDO中转换这个查询时,预期的语法如下所示

代码语言:javascript
运行
复制
if (isset($parameters['searchTerm'])) {
    $where =" And title LIKE :searchTerm";
} 



$sql = $dbh->prepare("Select * from table data Where tableId = 5 {$where}");



if (isset($parameters['searchTerm'])) {
    $sql ->bindParam(':searchTerm', '%{$parameters['searchTerm'] }%');
} 

$sql ->execute();

现在您可以看到,if条件if (isset ($parameters ['searchTerm'] )) {...}被重复了两次。

原因是

  1. 在设置$where之前,我无法准备sql查询,因此在第一个if语句之后初始化$sql变量。
  2. 在准备sql之前,我无法绑定参数,因此必须在准备$sql之后放置它。

因此,在$sql = $dbh->prepare("Select * from table data Where tableId = 5 {$where}");之前有一个if语句,在后面有一个if语句。

和我的问题是:是否有办法删除这个冗余的if语句,或者我只能这样做。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-10-08 08:12:34

您可以使用handy的特性,它允许您直接将带有参数的数组发送到execute()

代码语言:javascript
运行
复制
$where  = '';
$params = array();
if (isset($parameters['searchTerm'])) {
    $where =" And title LIKE :searchTerm";
    $params['searchTerm'] = "%$parameters[searchTerm]%";
}
$sql = "Select * from table data Where tableId = 5 $where";
$pdo->prepare($sql)->execute($params);

注意,代码中的PHP语法也是错误的。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33010085

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档