За последние 24 часа нас посетили 18826 программистов и 1613 роботов. Сейчас ищут 966 программистов ...

Динамический фильтр, склейка запроса из $_GET

Тема в разделе "PHP и базы данных", создана пользователем Игонь, 10 окт 2016.

Метки:
  1. Игонь

    Игонь Новичок

    С нами с:
    28 сен 2016
    Сообщения:
    6
    Симпатии:
    0
    Имеется массив, который я получаю с ссылки вида site.com/?cpu=1,2&brand=2,3&ram=2,3 методом $_GET

    Код (Text):
    1.     array(3) {
    2.       ["cpu"]=>
    3.       string(3) "1,2"
    4.       ["brand"]=>
    5.       string(3) "2,3"
    6.       ["ram"]=>
    7.       string(3) "2,3"
    8.     }
    Как мне из данного массива склеить запрос следующего содержания?

    Код (Text):
    1. SELECT * FROM table WHERE cpu=1 OR cpu=2 AND brand=2 OR brand=3 AND ram=2 OR ram=3
    Пытался как-то сделать вот так, но видимо имею неправильное представление о реализации.

    Код (Text):
    1. foreach($request->all() as $name => $value) {
    2.                 $valuesArray = explode(',', $value);
    3.                 foreach($valuesArray as $row) {
    4.                     $sql[] = 'WHERE ' . $name . '=' . $row;
    5.                 }
    6.             }
    P.S Делаю динамический фильтр, который выдает найденные позиции запрос у которого генерируется через $_GET
     
  2. Игонь

    Игонь Новичок

    С нами с:
    28 сен 2016
    Сообщения:
    6
    Симпатии:
    0
    Не успел отредактировать, обновил вопрос.
    Имеется массив, который я получаю с ссылки вида site.com/?cpu=1,2&brand=2,3&ram=2,3 методом $_GET

    Код (Text):
    1.     array(3) {[/COLOR][/FONT][/COLOR][/FONT][/COLOR][/FONT][/COLOR][/FONT][/COLOR][/FONT]
    2. [FONT=Arial][COLOR=rgb(20, 20, 20)][FONT=Open Sans][COLOR=rgb(44, 44, 44)][FONT=Arial][COLOR=rgb(20, 20, 20)][FONT=Open Sans][COLOR=rgb(44, 44, 44)][FONT=Arial][COLOR=rgb(20, 20, 20)]      ["cpu"]=>
    3.       string(3) "1,2"
    4.       ["brand"]=>
    5.       string(3) "2,3"
    6.       ["ram"]=>
    7.       string(3) "2,3"
    8.     }

    Как мне из данного массива склеить запрос следующего содержания?

    P.S Возможно имею неправильное видение составления запроса, если где то ошибся логикой запроса просьба поправить.

    Код (Text):
    1. [/COLOR][/FONT][/COLOR][/FONT][/COLOR][/FONT][/COLOR][/FONT][/COLOR][/FONT]
    2. [FONT=Arial][COLOR=rgb(20, 20, 20)][FONT=Open Sans][COLOR=rgb(44, 44, 44)][FONT=Arial][COLOR=rgb(20, 20, 20)][FONT=Open Sans][COLOR=rgb(44, 44, 44)][FONT=Arial][COLOR=rgb(20, 20, 20)]    SELECT * FROM table
    3.     WHERE slug = cpu AND name = 1 OR slug = cpu AND name = 2
    4.     WHERE slug = brand AND name = 2 OR slug = brand AND name = 3
    5.     WHERE slug = ram AND name = 2 OR slug = ram AND name = 3


    Пытался как-то сделать вот так, но видимо имею неправильное представление о реализации.


    Код (Text):
    1. foreach($request->all() as $name => $value) {[/COLOR][/FONT][/COLOR][/FONT][/COLOR][/FONT][/COLOR][/FONT][/COLOR][/FONT]
    2. [FONT=Arial][COLOR=rgb(20, 20, 20)][FONT=Open Sans][COLOR=rgb(44, 44, 44)][FONT=Arial][COLOR=rgb(20, 20, 20)][FONT=Open Sans][COLOR=rgb(44, 44, 44)][FONT=Arial][COLOR=rgb(20, 20, 20)]                $valuesArray = explode(',', $value);
    3.                 foreach($valuesArray as $row) {
    4.                     $sql[] = 'WHERE ' . $name . '=' . $row;
    5.                 }
    6.             }


    P.S Делаю динамический фильтр, который выдает найденные позиции запрос у которого генерируется через $_GET
     
  3. denis01

    denis01 Суперстар
    Команда форума Модератор

    С нами с:
    9 дек 2014
    Сообщения:
    12.227
    Симпатии:
    1.714
    Адрес:
    Молдова, г.Кишинёв
    Можно начать с этого, помни что нельзя доверять данным которые пришли от пользователя,
    http://phpfaq.ru/tech/safety
    SQL Injection
    XSS

    Из ссылки получить параметры GET запроса https://secure.php.net/manual/ru/function.parse-url.php PHP_URL_QUERY
    Чтобы разобрать параметры GET запроса в массив https://secure.php.net/manual/ru/function.parse-str.php
    Чтобы склеить часть SQL запрос из массива https://secure.php.net/manual/ru/function.implode.php