我将所有查询从mysql转换为PDO,在此过程中我发现了一个条件查询,如下所示
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'] )) {...}
重复两次。
原因是
因此在$sql = $dbh->prepare("Select * from table data Where tableId = 5 {$where}");
之前有一个if语句,在之后有一个if语句。
我的问题是:有没有办法删除这个冗余的if语句,或者我必须这样做。
答案 0 :(得分:0)
您可以使用便捷的PDO功能,让您可以将带参数的数组直接发送到execute()
$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语法也是错误的。