【发布时间】:2015-12-28 21:12:52
【问题描述】:
我有一个 php 搜索查询来在我的数据库上运行查询。它工作得很好,但我无法让这些字段成为可选的。为了使搜索运行(截至目前),所有字段都必须填写。我已经尝试了Constructing an SQL query around optional search parameters 的建议,但运气不佳。该页面仍在加载,但我收到了无法调试的布尔错误。我还尝试了来自mysqli_fetch_assoc() expects parameter 1 to be mysqli_result, boolean given 的建议来修复我收到的布尔错误。
这是我的原始代码,除了字段是可选的。
PHP 查询-
<?php
//The File for the Database Connection
include('login/con.php');
//The SQL Query
$table = "SELECT * FROM milelog ";
if ($_SERVER['REQUEST_METHOD'] == 'POST'){
$input = mysqli_escape_string($dbconn, $_POST['location']);
$carin = mysqli_escape_string($dbconn, $_POST['Carin']);
$sdate = mysqli_escape_string($dbconn, $_POST['SDate']);
$edate = mysqli_escape_string($dbconn, $_POST['EDate']);
$miles = mysqli_escape_string($dbconn, $_POST['Miles']);
if(isset($carin)){
$table .= "WHERE Car = '$carin'";
if (isset($input))
$table .= "AND Location LIKE '%$input%'";
if (isset($sdate))
$table .= "AND Date BETWEEN '$sdate' AND '$edate'";
if (isset($miles))
$table .= "AND Miles = '$miles'";
}
}
$show = mysqli_query($dbconn, $table);
?>
这是正确显示的表格。
<table class="table">
<tr>
<td>ID</td><td>Car</td><td>Date</td><td>Location</td><td>Miles</td><td></td><td></td>
</tr>
<?php while ($row = mysqli_fetch_assoc($show)) {
echo "<tr><td>".$row['id']."</td>";
echo "<td>".$row['Car']."</td>";
echo "<td>".$row['Date']."</td>";
echo "<td>".$row['Location']."</td>";
echo "<td>".$row['Miles']."</td>";
echo "<td><a href='editentry/delete2.php?id=".$row['id']."'>Delete</a></td> <tr>";
}
?>
</table>
理想情况下,我应该能够填写这些字段的任意组合,并且仍然能够执行查询。我花了 5 天时间搜索表格,但未能找到对我有用的成功答案。我确定答案很简单,而且我刚刚错过了一些东西。一个正确方向的点将不胜感激。另外,如果我需要对我的问题进行更改或添加任何内容,请告诉我,以帮助它在社区中成为一个合理的问题。
【问题讨论】: