Php 使用2列表框进行筛选搜索

Php 使用2列表框进行筛选搜索,php,mysql,Php,Mysql,你好 我在PHP中使用过滤搜索时遇到问题。这是我的HTML表单: <form action="index.php" action="get"> <input type="hidden" name="submit" value="true"> <label>Product <select name="product"> <option value="Product 1">Product 1</option> <optio

你好

我在PHP中使用过滤搜索时遇到问题。这是我的HTML表单:

<form action="index.php" action="get">
<input type="hidden" name="submit" value="true">
<label>Product
<select name="product">
<option value="Product 1">Product 1</option>
<option value="Product 2">Product 2</option>
<option value="Product 3">Product 3</option>
<option value="Product 4">Product 4</option>
<option value="Product 5">Product 5</option>
</select>
</label>

<label>City
<select name="city">
    <option value="Sample City 1">Sample City 1</option>
    <option value="Sample City 2">Sample City 2</option>
    <option value="Sample City 3">Sample City 3</option>
</select>
</label>

<input type="submit" value="Search">
</form>

产品
产品1
产品2
产品3
产品4
产品5
城市
样本城市1
样本城市2
样本城市3
如您所见,我有两个列表框,将作为搜索的两个类别。 以下是我的搜索PHP代码:
if(isset($_GET['submit'])) {

require("connect.php");

$product = $_GET['product'];
$city = $_GET['city'];

$query = "SELECT * FROM records";
$result = mysqli_query($con, $query) or die ("Could not connect to database"); 

echo "<table>";

while ($row = mysqli_fetch_array($result)) {
echo "<tr><td>";
echo $row['store'];
echo "</td><td>";
echo $row['city'];
echo "</td></tr>";
}

echo "</table>";
}
if(isset($\u GET['submit'])){
需要(“connect.php”);
$product=$_GET['product'];
$city=$_GET['city'];
$query=“从记录中选择*”;
$result=mysqli_query($con,$query)或die(“无法连接到数据库”);
回声“;
while($row=mysqli\u fetch\u数组($result)){
回声“;
echo$row['store'];
回声“;
echo$行['city'];
回声“;
}
回声“;
}
*这个PHP就在我的HTML格式之后。 我基本上需要做的是在数据库中显示匹配这两个类别的结果

下面是我的数据库的外观:

我的产品1-产品5被设置为TINYINT,因为从我读到的关于TINYINT的内容来看,除了0之外的任何值都被认为是真的,0是假的

我的实际目标是只显示与用户设置的类别匹配的记录。 如果用户将产品类别设置为产品1,将城市类别设置为样本城市4,则会检查产品1在样本城市4中是否为0=不可用或1=可用。如下所示,如果它可用,那么它将显示可以找到它的商店的名称

但是在我的PHP代码中的这一行:
$query=“从记录中选择*”

我在试图修改它时遇到问题。示例:
$query=“从记录中选择*,其中$product='$city'

它显示了我的死亡信息

有没有其他更简单的方法可以实现这一点?提前谢谢

试试这个

if(isset($_GET['submit'])) {

 require("connect.php");

 $product = $_GET['product'];
 $city = $_GET['city'];

 $column_name =  preg_replace('/\s+/', '', strtolower($product));

 $query = "SELECT * FROM test_table WHERE $column_name = 1 and city = '$city'";
 $result = mysqli_query($con, $query) or die ("Could not connect to database"); 

 echo "<table>";

 while ($row = mysqli_fetch_array($result)) {
  echo "<tr><td>";
  echo $row['store'];
  echo "</td><td>";
  echo $row['city'];
  echo "</td></tr>";
 }

 echo "</table>";
}
if(isset($\u GET['submit'])){
需要(“connect.php”);
$product=$_GET['product'];
$city=$_GET['city'];
$column_name=preg_replace('/\s+/','',strtolower($product));
$query=“从测试_表中选择*,其中$column_name=1,city='$city';
$result=mysqli_query($con,$query)或die(“无法连接到数据库”);
回声“;
while($row=mysqli\u fetch\u数组($result)){
回声“;
echo$row['store'];
回声“;
echo$行['city'];
回声“;
}
回声“;
}

我认为这对你有帮助。

@NullPoiцteè实际上,这应该是
die(mysqli_error($con))
-OP正在使用
mysqliц
没有错误消息,但没有显示任何数据。@Fred ii-抱歉。。。。我的眼睛只看到我所想的:D谢谢。。用户3627135如果您不知道您的列名为
product1
,但您正在使用
,它应该在
等位置,那么您的代码很容易受到SQL注入的攻击。另外,在打开
@NullPoièteè后立即在文件顶部添加错误报告。不客气,我也知道这些;相信我;)谢谢您的回复,好心的先生。但是我在$str上收到一个未定义的变量错误。很抱歉我的错误:(。请立即更改。将$str替换为$product。再次感谢您的答复,先生。将$str更改为$product后,我无法连接到我的数据库:(