Php и MySQL фильтр - PullRequest
       3

Php и MySQL фильтр

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

Я пытаюсь создать фильтр в MySQL и PHP.В моей базе данных у меня есть много полей, таких как: имя, номер телефона, адрес электронной почты ... И даже если я сделаю что-то вроде

if(!empty($_POST['name'])){ 
$name=$_POST['name']
}
if(!empty($_POST['phoneNumber'])){ 
   $phoneNumber= $_POST['phoneNumber']
    }
if(!empty($_POST['email'])){ 
    $email=$_POST['email']
    }

Если кто-то только вводит поле имени, как мне сделать, чтобы не включатьдругие поля в запросе?

$query=query("SELECT * FROM clients WHERE clientName=$clientName && phoneNumber=$phoneNumber && email=$email)

Ответы [ 3 ]

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

вы можете попробовать что-то похожее на приведенное ниже

if(!empty($_POST['name'])){ 
$name=$_POST['name'];
$query="SELECT * FROM clients WHERE clientName='$name'";
}
if(!empty($_POST['phoneNumber'])){ 
   $phoneNumber= $_POST['phoneNumber'];
   $query.= " AND phoneNumber='$phoneNumber'";
    }
if(!empty($_POST['email'])){ 
    $email=$_POST['email'];
    $query.= " AND email='$email'";
    }

ПРИМЕЧАНИЕ: используйте подготовленный запрос, потому что он открыт для SQL-инъекций.это только демонстрация.

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

Что я делаю для такого рода вещей, так это чтобы все условия поиска отправлялись для публикации в пределах одного объекта JSON.Таким образом, в javascript я собираю все входные данные поиска и имею объект, где каждая клавиша соответствует имени ввода, а каждое значение соответствует значению val.Например, в jQuery

var searchObj = {};
$(".searchInput").each(function() {
     searchObj[$(this).attr('name')] = $(this).val();
});
var searchJSON = JSON.stringify(searchObj);
//later send searchJSON to php

//in php
$seachObj = json_decode($_POST["searchJSON"], true);
$sql = "SELECT * in CLIENTS WHERE ";
foreach($searchObj as $key => $val) {
    $sql .= "$key = '$val' AND ";
}
$sql .= "1";

СЕЙЧАС ЭТО ПОЛНОСТЬЮ НЕОБХОДИМО!Только в комплекте, чтобы было понятно.Лучше использовать PDO или MySQL, чтобы использовать подготовленные заявления.Как это:

$seachObj = json_decode($_POST["searchJSON"], true);
$sql = "SELECT * in CLIENTS WHERE ";
$vals = [];
foreach($searchObj as $key => $val) {
    $vals[] = $val;
    $sql .= "$key = ? AND ";
}
$sql .= "1";
//learn more about PDO to get this part
$stmt = $pdo->prepare($sql);
$stmt->execute($vars);
0 голосов
/ 23 мая 2018

Я думаю, что это сделало бы это.

$condition = "";

if(!empty($_POST['name'])){ 
$name=$_POST['name'];
$condition .= " AND clientName LIKE ".$name;
}
if(!empty($_POST['phoneNumber'])){ 
   $phoneNumber= $_POST['phoneNumber'];
    $condition .= " AND phoneNumber ='".$phoneNumber."'";
}
if(!empty($_POST['email'])){ 
    $email=$_POST['email'];
    $condition .= " AND email='".$email."'";
}

if(!empty($condition)){
   $query="SELECT * FROM clients WHERE ".ltrim($condition," AND");
}else{
   $query="SELECT * FROM clients";
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...