Php MYSQL使用存储在单独表中的过滤器从产品表中选择
我有一个包含两个重要表的数据库。一张表包括我们的整个产品目录。另一个是从后端面板中选择用于搜索的筛选器列表。出于某种原因,这是在执行时显示一个空白屏幕。我很确定我很愚蠢,错过了一些愚蠢的事情 MYSQL日志显示Php MYSQL使用存储在单独表中的过滤器从产品表中选择,php,mysql,database,filter,Php,Mysql,Database,Filter,我有一个包含两个重要表的数据库。一张表包括我们的整个产品目录。另一个是从后端面板中选择用于搜索的筛选器列表。出于某种原因,这是在执行时显示一个空白屏幕。我很确定我很愚蠢,错过了一些愚蠢的事情 MYSQL日志显示 SELECT * FROM product_list WHERE product_list.PRODUCT_NAME IN ('\'product1\' OR \'product2\' //etcetc 有人有什么想法吗?我的脚本如下: echo "<table class='i
SELECT * FROM product_list WHERE product_list.PRODUCT_NAME IN ('\'product1\' OR \'product2\' //etcetc
有人有什么想法吗?我的脚本如下:
echo "<table class='inventorydata'><tr><td>SKU</td><td></td><td>Title</td><td>Quanitity</td></tr><tr><td colspan='4'></td></tr>";
//table header
$filterproducts = $dbh->prepare("SELECT * FROM table_filter_selection ORDER BY filter ASC");
$filterproducts->execute();
$filterselect = $filterproducts->fetchAll();
//select all set filters from the table
$filteroptions = "'";
foreach($filterselect as $filterRow){
$filteroptions .= $filterRow['filter'] . "' OR '";
}
//set filters in to a string
$truesearch = $dbh->prepare("SELECT * FROM product_list WHERE product_list.PRODUCT_NAME IN (:filterchoice)");
$truesearch->bindParam(":filterchoice", $filteroptions, PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$truesearch->execute();
//use filters set as parameters for searching through products
foreach($truesearch as $rows){
echo "<tr><td>" . $rows['SKU'] ."<td/><td>". $rows['PRODUCT_NAME'] ."</td><td>". $rows['QTY'] . "</td></tr>";
}
//display products
echo "</table>";
echo“skutitlequantity”;
//表头
$filterproducts=$dbh->prepare(“从表中选择*过滤器”\u过滤器ASC的选择顺序”);
$filterproducts->execute();
$filterselect=$filterproducts->fetchAll();
//从表中选择所有设置过滤器
$filteroptions=“”;
foreach($filterselect as$filterRow){
$filteroptions.=$filterRow['filter']。“'或'”;
}
//将过滤器设置为字符串
$truesearch=$dbh->prepare(“从产品列表中选择*,其中产品列表中有产品名称(:filterchoice)”);
$truesearch->bindParam(“:filterchoice”、$filteroptions、PDO::ATTR_ERRMODE、PDO::ERRMODE_EXCEPTION);
$truesearch->execute();
//使用过滤器集作为搜索产品的参数
foreach($truesearch作为$rows){
回显“$rows['SKU']”、$rows['PRODUCT_NAME']”、.$rows['QTY']”;
}
//展示产品
回声“;
目前,我只需循环每个过滤器,并在每个循环中打开一个连接,就可以解决这个问题。不是最漂亮的,但暂时可以。谢谢您的帮助。首先,检查服务器上的错误日志,是否有任何错误?其次,如果您在脚本中设置了一个断点并逐步执行,您是否看到了任何问题?您是否可以扩展“truesearch”查询的外观?现在看起来您正在构建一个字符串,并在值之间添加”或“
”。然后尝试在PRODUCT_NAME列中查找该字符串。在使用准备好的语句时,不能添加这样的SQL语句。它不会连接语句,而是将其用作文本字符串。Pseudo:从产品列表中选择所有产品。Truesearch是通过“:filterchoice”查找与一个或多个过滤器匹配的所有行。一旦选择了这些行,就可以将它们输出到html表的一行中。当我意识到我使用了一个愚蠢的var名称时,进行了编辑。