Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/57.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php MYSQL使用存储在单独表中的过滤器从产品表中选择_Php_Mysql_Database_Filter - Fatal编程技术网

Php 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

我有一个包含两个重要表的数据库。一张表包括我们的整个产品目录。另一个是从后端面板中选择用于搜索的筛选器列表。出于某种原因,这是在执行时显示一个空白屏幕。我很确定我很愚蠢,错过了一些愚蠢的事情

MYSQL日志显示

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名称时,进行了编辑。