如何处理php-api post-select语句中的'in'条件?

hmae6n7t  于 2021-06-18  发布在  Mysql
关注(0)|答案(1)|浏览(260)

我有下面的php代码示例,用于从带有“in”的数据库中选择数据condition:-
产品型号.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;
        }

产品.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 来?目前这不起作用。请帮忙。谢谢

]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 . ")";
sqxo8psd

sqxo8psd1#

条件值应该是数组或逗号分隔的值,例如 condition=new,used 或者 condition[]=new&condition[]=used 从那里你可以分解逗号或者使用数组来绑定你的值
你可以利用 $array = explode(',',$_POST['condition']) 如果你选择前者。
从那里你将需要建立你的 IN (?,?,?) 对于每个值,perhapps如下所示:

$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请求。

相关问题