美好的一天!
我在使用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>
如您所见,我有两个列表框,它们将作为搜索的两个类别。 这是我的搜索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>";
}
*这个PHP就在我的HTML形式之后。 我基本上需要做的是在数据库中显示与两个类别匹配的结果。
以下是我的数据库的样子:
我的products1 - products5设置为sa TINYINT,因为我从TINYINT中读到的是除了0以外的任何值都被认为是TRUE而0是FALSE。
我的实际目标是只显示与用户设置的类别相匹配的记录。 如果用户将PRODUCTS类别设置为PRODUCT 1而CITY类别设置为SAMPLE CITY 4,则它将检查SAMPLE CITY 4中的PRODUCT 1是0 = NOT AVAILABLE还是1 = AVAILABLE。如下所示,如果它可用,那么它将显示可以找到它的STORE的名称。
但是在我的PHP代码中的这一特定行:
$ query =“SELECT * FROM records”;
我在尝试修改它时遇到了麻烦。例如:
$ query =“SELECT * FROM records WHERE $ product ='$ city'”;
它显示了我的die()消息。
还有其他方法可以用更简单的方式完成吗?提前谢谢!
答案 0 :(得分:0)
试试这个
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>";
}
我认为这对你有帮助。