php - 只有我的数组的最后一个值返回给我
问题描述
在我的学习项目结束时,我决定在过滤器上做一个小电子商务问题。我在单击复选框时使用 ajax 请求,这将转到我的控制器,该控制器调用我的 Model 类的方法,但问题是如果数组$ _POST ['brands']
有几个元素,那么只有最后一个返回给我?我想我有一天看到如果同一个变量在一个 url 中,那么最后一个值将返回给我是为了安全,但我该怎么办?我已经在那里太久了..终于绝望了。请帮帮我... :')
-------------- FROM ---- thx
init_brands(val, categorie){
console.log(val);
if(this.brands.indexOf(val) != -1){
this.brands.pop(val)
console.log(this.brands)
}else{
this.brands.push(val)
console.log(this.brands)
}
if(this.brands.length === 0){
$.post({
url : "./menu/"+ categorie,
})
}else{
$.post({
url : "./menu/"+ categorie,
data: {
"brands" : this.brands
}
})
}
}
/* CONTROLLER PHP */
public function control_articles_filter(){
if(isset($_POST['brands']) && !empty($_POST['brands'])){
$res = Articles::return_articles_by_categories_and_brands($_GET['a'], $_POST['brands']);
return $res;
}else{
$_POST['brands'] = 0;
$res = Articles::return_articles_by_categorie($_GET['a']);
return $res;
}
}
/* MODEL PHP */
public function return_articles_by_categories_and_brands($categorie,$brands){
$db = ModelArticles::connect_db_articles();
$sql = "SELECT marque FROM articles WHERE categorie_article=? AND marque IN (";
$params = [];
if(count($brands) > 12){
header("Location : ./");
}else{
foreach($brands as $brand){
$params[] = '?';
$binds[] = $brand;
}
$req = $db->prepare($sql . join(',', $params) . ')');
echo "<- prepare <br>" , var_dump($req);
$req->bindParam(1, $categorie);
$i = 1;
foreach($binds as $bind){
$req->bindParam(++$i, $bind);
echo "<br>";
var_dump($bind);
echo "<- bind <br>";
}
$req->execute();
echo "var_dump() of my fetchAll() <br>";
return var_dump($req->fetchAll());
}
}
<form action="/" method="POST">
<?php $i = 0; ?>
<?php foreach ($brands as $brand): ?>
<input type="checkbox" onclick="filter.init_brands('<?= $brand['marque'] ?>', '<?= $_GET['a'] ?>')" >
<p class="is-inline is-size-7"><?= $brand['marque'] ?></p>
<?php endforeach; ?>
</form>
}
请求有效载荷:
brands%5B%5D=arai&brands%5B%5D=bell
回复 :
<- prepare var_dump ()
object (PDOStatement) # 2 (1) {["queryString"] => string (73) "SELECT mark FROM articles WHERE categorie_article =? AND mark IN (?,?)"}
string (4) "arai" <- bind
string (4) "bell" <- bind
var_dump () of my fetchAll ()
array (2) {[0] => array (2) {["brand"] => string (4) "bell" [0] => string (4) "bell"} [1] => array (2 ) {["brand"] => string (4) "bell" [0] => string (4) "bell"}}
image_icon
因为考虑到的最后一个值是 bell,所以我从我的 bdd 中获得了 bell 品牌的两件商品,但没有 arai ...
--------------------------- ///
解决方案
推荐阅读
- java - 在 pom.xml 中覆盖用于上传的存储库
- go - 服务器未响应 go echo 框架中的 API 调用
- excel - 如何删除小数点前的前导零?Excel 已格式化,但我的用户表单中的组合框正在添加它们
- android - 无法使用广播接收器 (Kotlin) 更新 UI
- amazon-web-services - 如何使用 AWS Lambda 确定(变量的)外部状态?
- jib - 如何使用 JIB 在容器内创建目录?
- c# - Asp.NET Core 如何设置 maxJsonLength
- pandas - 如何在熊猫中移动日期时间的时间戳边界(使用历史数据)?
- python - gdal-python 中的 ReadAsArray 是否与 C-GDAL 中的 GDALRasterIO 相同?
- javascript - 使用上下文订阅停止子组件重新渲染