$arr = array();
$from_date = '2015-01-01';
$to_date = '2015-01-31';
$order_no = '25215';
$sql = "SELECT * FROM test";
if(!empty($from_date)&&!empty($to_date))
{
$sql.=" WHERE txn_date BETWEEN :from_date AND :to_date";
$arr[] = ":from_date => $from_date";
$arr[] = ":to_date => $to_date";
$condition=true;
}
if(!empty($order_no))
{
if($condition)
{
$sql.=" AND ref_number = :order_no";
$arr[] = ":order_no => $order_no";
}
else
{
$sql.=" WHERE ref_number = :order_no";
$arr[] = ":order_no => $order_no";
$condition=true;
}
}
$stmt = $db->prepare($sql);
$stmt->execute($arr);
$results = $stmt->fetchAll(PDO::FETCH_ASSOC);
При выполнении этого запроса показывает предупреждение какPHP PDO Динамический запрос Строительство
Внимание: PDOStatement :: Execute(): SQLSTATE [HY093]: Неверный номер параметра: параметр не был определен
что с этим связано?
Ваш 'ref_number LIKE: order_no 'также может быть' ref_number =: order_no', поскольку у вас нет подстановочных знаков – Phil