Гибкая опция поиска с параметрами массива исполнения - PullRequest
0 голосов
/ 21 мая 2018

Я пытаюсь создать гибкую опцию поиска, но параметры не работают в массиве execute.Могу ли я получить помощь по этому поводу?

$extra = '';
$params = array();

$sql = "SELECT brand_id,brand_status,brand_name FROM brands ORDER BY brand_name";

$brand_status = "";
$brand_name = "su";

if($brand_status) {
    $extra .= "brand_status=:brand_status and ";
    $params[] = array(
        "brand_status" => $brand_status
    );
}
if($brand_name) {
    $extra .= "brand_name LIKE :brand_name and ";
    $params[] = array(
        "brand_name" => "%" . $brand_name . "%"
    );
}

if(count($params) > 0) {
    if(strlen($extra) > 0) {
        $extra = substr($extra, 0, -5);
    }
    $sql = "SELECT brand_id,brand_status,brand_name FROM brands WHERE $extra ORDER BY brand_name";
    $query = $db->prepare($sql);
    $result = $query->execute(array(
        $params
    ));
} else {
    $result = $query = $db->query($sql);
}

if($result)
    $num = $query->rowCount();
if($num > 0) {
    while($row = $query->fetch()) {
        echo $row['brand_name'] . "<br>";
    }
}

Если значение brand_name пустое, код работает хорошо.Могу ли я сделать гибкую опцию поиска с параметрами массива исполнения без использования bindParam или bindValue?

1 Ответ

0 голосов
/ 21 мая 2018

Найджел Рен, marekful и user3783243 большое спасибо за ответы и идеи.

Не работал с: execute($params)

Работал с: params['brand_status'] = $brand_status

и хорошая идея для: rtrim($extra, ' and ')

ПРИМЕЧАНИЕ. Я должен ответить на свой вопрос, как этот, или я должен отредактировать свои вопросы с ответами?Если я сделал неправильно, извините за это.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...