使用值数组过滤mysql结果

时间:2015-11-02 12:04:28

标签: php mysql

大家。 我写了这个代码来过滤sql结果。如您所见,我使用一系列值来过滤相关品牌的产品。变量$ opts通过jQuery / AJAX动态填充。我的问题是:如何修改此代码(sql查询)以按品牌名称筛选结果,例如颜色或大小?我在数据库中有两个表,一个用于产品(id,名称,描述,颜色,图片,brand_name),另一个用于品牌(id& brand_name)。知道$ color变量也应该是一个数组,类似于$ opts,这一点很重要。做这个的最好方式是什么?我应该使用bind_param还是别的什么?

<?php

include ("database.php");
$pdo = database::connect();

$opts = isset($_POST['filterOpts'])? $_POST['filterOpts'] :$_GET['brand_id'];
$qMarks = str_repeat('?,', count($opts)-1). '?';
$statement = $pdo -> prepare("SELECT products.id, name, description, price,  picture, color FROM products INNER JOIN brand ON brand_id = brand.id WHERE name  IN ($qMarks)");
$statement -> execute($opts);
$results = $statement -> fetchAll(PDO::FETCH_ASSOC);
$json = json_encode($results);
echo($json);
?>

在尝试弄清楚如何做到这一点时,我尝试添加这样的东西:

$color = "white";
$statement = $pdo -> prepare("SELECT products.id, name, description,price, picture, color FROM products INNER JOIN brand ON brand_id = brand.id WHERE name IN ($qMarks) AND color LIKE $color");

或者这个:

$color = array();
array_push($color,"bela");
$color1 = implode(",", $color);
$statement = $pdo -> prepare("SELECT pozivnice.id, ime, naslov, cena, slika,  boja FROM pozivnice INNER JOIN brand ON brand_id = brand.id WHERE ime IN     ($qMarks) AND WHERE boja IN $color1");

它似乎无法工作...... 这是我的测试网站&gt; http://www.nemchus.pe.hu/products.php?brand_id=retro

0 个答案:

没有答案