Поиск нескольких элементов в нескольких столбцах - PullRequest
2 голосов
/ 28 января 2011

У меня есть 6 выбранных элементов в форме.Я хочу искать эти 6 в базе данных MYSQL.Я могу получить результаты, если я использую только один, например:

$result = mysql_query("SELECT * FROM wsinmuebles WHERE Property_Type LIKE '%{$_POST['Property_Type']}%'");

Но когда я пытаюсь больше, я не получаю никаких результатов!

$result = mysql_query("SELECT * FROM wsinmuebles WHERE 
Property_Type LIKE '%{$_POST['Property_Type']}%' AND 
Estado LIKE '%{$_POST['Estado']}%' AND 
Ciudad LIKE '%{$_POST['Ciudad']}%' AND 
Urbanizacion LIKE '%{$_POST['Urbanizacion']}%' AND 
Operacion LIKE '%{$_POST['Operacion']}%' AND 
Precio_bsf LIKE '%{$_POST['Precio_bsf']}%'");

Это происходит из формы методом POST.

Мне нужно найти переменные Property_Type, Estado, Ciudad, Urbanizacion, Operacion и Precio_bsf в базе данных MYSQL и получить только результаты, соответствующие всем этим значениям.

Ответы [ 3 ]

1 голос
/ 28 января 2011

Во-первых, избегайте значений post, используя mysql_real_escape_string ( Link ), чтобы избежать любых атак SQL-инъекций, а также проблем с данными, имеющими ' символов.

Во-вторых, повторить запрос, выполнить его для базы данных и проверить данные таблицы, чтобы увидеть, действительно ли запрос
должен возвращать некоторые значения или, может быть, совпадений нет, если включить остальные критерии, так как вы упомянуличто вы ожидаете результаты , которые соответствуют всем этим значениям.

1 голос
/ 28 января 2011

Не используйте И не используйте И между критериями, и в конце концов вы должны знать, что объединение строк и выполнение запросов дает возможность SQL-инъекции, то есть, когда вместо строки поиска я заканчиваю ваш запрос и выполняю заданное действие, например "" и 1 = 1; удалить wsinmuebles ", если это мой поисковый запрос, вы потеряете все свои данные.

  $result = mysql_query("select * from tbl1 where Name='".mysql_escape_string ($_POST["value"]."'" );
0 голосов
/ 28 января 2011

Если поле, скажем, Urbanizacion равно нулю, ваш запрос не вернет его.

Urbanizacion LIKE '%%'   =>   FALSE when Urbanizacion is Null

Вам нужно будет обработать пустые значения.Я также настоятельно призываю вас защитить код от SQL-инъекций, используя mysql_real_escape_string

$result = mysql_query("
    SELECT * FROM wsinmuebles WHERE 
    IFNULL(Property_Type,'') LIKE '" . mysql_real_escape_string($_POST['Property_Type']) ."' AND 
    IFNULL(Estado,'') LIKE '" . mysql_real_escape_string($_POST['Estado']). "' AND 
    IFNULL(Ciudad,'') LIKE '" . mysql_real_escape_string($_POST['Ciudad']) ."' AND 
    IFNULL(Urbanizacion,'') LIKE '" . mysql_real_escape_string($_POST['Urbanizacion']) ."' AND 
    IFNULL(Operacion,'') LIKE '" . mysql_real_escape_string($_POST['Operacion']) ."' AND 
    IFNULL(Precio_bsf,'') LIKE '" . mysql_real_escape_string($_POST['Precio_bsf']) ."'");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...