我有以下示例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?目前,这不起作用。 请帮忙。谢谢] 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 . ")";
答案 0 :(得分:1)
您的条件值可能应该是数组或逗号分隔的值,例如
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 . ')';
这是在计算$array
中的项目数,并添加正确数量的?
占位符,当然您应该不考虑提供的值。
然后,您需要在SQL请求中形成正确的数据绑定。