Как правильно отфильтровать результаты из MySQL, используя форму? - PullRequest
0 голосов
/ 24 сентября 2018

Как правильно отфильтровать результаты?Что у меня есть, так это форма, где вы можете ввести имя, фамилию, телефон и все остальное.Как сделать так, чтобы оператор игнорировал пустые поля ввода вместо поиска значений, которые являются пустыми?

Я использую подготовленные операторы, и когда я фильтрую материал, я использую WHERE firstname = ? and lastname = ? и оператор изменения условий, если что-то пусто.Как я могу запретить делать сотни заявлений с условиями?

$stmt = $this->mysqli->prepare("SELECT * FROM cust");

    if(!empty($firstname) && !empty($lastname)) {
        $stmt = $this->mysqli->prepare("SELECT * FROM cust WHERE as_first = ? AND as_last = ?");
        $stmt->bind_param("ss", $firstname, $lastname);
    } else if(!empty($firstname) && empty($lastname)) {
        $stmt = $this->mysqli->prepare("SELECT * FROM cust WHERE as_first = ?");
        $stmt->bind_param("s", $firstname);
    } else if(empty($firstname) && !empty($lastname)) {
        $stmt = $this->mysqli->prepare("SELECT * FROM cust WHERE as_last = ?");
        $stmt->bind_param("s", $lastname);
    }

1 Ответ

0 голосов
/ 24 сентября 2018

К сожалению, вы должны написать свои собственные условия, такие как:

$sql = 'SELECT...' // your original query
$sql .= !empty($phone) ? ' phone = :phone';

и параметры привязки вручную:

if (!empty($phone)) {
    $stmt->bindParam(':phone', '%'.$phone.'%', PDO::PARAM_STR);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...