我正在将所有的查询从mysql转换到PDO,在这个过程中我发现了一个条件查询,比如follows
if (isset($parameters['searchTerm'])) {
$where =" And title LIKE '%{$parameters['searchTerm'] }%'";
}
$sql = "Select * from table data Where tableId = 5 {$where} ";
当我试图在PDO中转换这个查询时,预期的语法如下
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查询,因此$SQL变量在第一个if语句之后初始化
1.在准备好SQL之前,我不能绑定参数,因此必须将其放置在准备好$SQL之后
所以在$sql = $dbh->prepare("Select * from table data Where tableId = 5 {$where}");
之前有一个if语句,之后有一个if语句。
**我的问题是:**有没有办法删除这个多余的if语句,或者我只能这样做。
1条答案
按热度按时间xcitsw881#
您可以使用一个方便的PDO特性,它允许您将带有参数的数组直接发送到execute()