如何处理“ IN”条件的PHP API POST选择语句?

时间:2018-12-04 03:58:06

标签: php mysql select postman

我有以下示例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 :(得分:1)

您的条件值可能应该是数组或逗号分隔的值,例如

condition=new,usedcondition[]=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请求中形成正确的数据绑定。