我正在将所有查询从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语句,或者我只能这样做。
发布于 2015-10-08 08:12:34
您可以使用handy的特性,它允许您直接将带有参数的数组发送到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语法也是错误的。
https://stackoverflow.com/questions/33010085
复制相似问题