Как обработать оператор PHP POST select с условием IN? - PullRequest
0 голосов
/ 04 декабря 2018

У меня есть пример php-кода, как показано ниже, для выбора данных из базы данных с условием 'IN' : -

product_model.php

public function product_attribute_filter($data) {
            $sql = "select p.name,p.image from product p where  p.condition in (?)"; 

            $result = $this->db->query($sql, array($data['condition']));
            $records = array();
            foreach( $result->result_array() as $r ) {

            }
            return $records;
        }

product.php

public function product_attribute_filter() {

        $this->load->helper('my_check');
        $data = checkPostKey(array('condition'));
        $result = $this->Product_category_model->product_attribute_filter($data);
        if (count($result) == 0) {
            echo json_encode($result,JSON_UNESCAPED_SLASHES);
        } else {
            echo json_encode($result,JSON_UNESCAPED_SLASHES);
        }
    }

Как я могу опубликовать его как select p.name,p.image from product p where p.condition in ('New','Used') ??

Кроме того, как я могу попытаться позвонить в POSTMAN?В настоящее время это не работает.Пожалуйста помоги.Спасибо ![enter image description here] 1

Отредактировано

Я изменил следующий код в соответствии с примером кода Scuzzy и его работой.

 $array = array("New","Used");

                $placeholder = '"' . implode('", "', array_values($array)) . '"';

                $sql = "select p.name,p.image from product p where  p.condition in (" . $placeholder . ")";

1 Ответ

0 голосов
/ 04 декабря 2018

Ваше условие должно быть либо массивом, либо запятыми, например,

condition=new,used или condition[]=new&condition[]=used

Оттуда вы можете взорвать запятую или работать с массивомчтобы связать ваши значения

, вы можете использовать $array = explode(',',$_POST['condition']), если вы пойдете первым.

оттуда вам нужно будет создать свой IN (?,?,?) для каждого значения, которое выглядит примерно так:

$placeholder = implode( ',', array_fill( 0, count( $array ), '?' ) );
$sql = 'select p.name,p.image from product p where  p.condition in (' . $placeholder . ')';

https://3v4l.org/q3SO9

это подсчет количества элементов в $array и добавление правильного числа ? заполнителей, конечно, вы должны учитывать отсутствие предоставленных значений.

Затем вам нужно будет сформировать правильную привязку данных в вашем запросе SQL.

...