我正在尝试使用PDO在PHP中创建搜索。它有两个输入字段。目前,如果我删除其中一个字段及其关联的PHP代码,它将从数据库中检索数据。但是,当两者都存在时,"笑话"输入字段内容仅限制数据,如果" author"输入存在。
这是HTML:
navigationController?.hidesBarsOnSwipe = true
这是PHP:
<div>
<form action="search.php" method="get">
<label for="text">Joke</label>
<input type="text" name="text" id="text">
<label>Author</label>
<label for="author">author</label>
<select name="author" id="author">
<option>select</option>
<option value="1">1</option>
<option value="2">2</option>
</select>
<button type="submit" class="btn btn-orange">Go</button>
</form>
</div>
我没有收到任何错误。
有人可以看看吗?
答案 0 :(得分:0)
这里最好的模式是累积一个条件列表,并在完成后用implode
折叠它们:
$bind = [ ];
$conds = [ ];
if ($_GET)
{
if ($_GET["text"] && $_GET["text"] != "") {
$conds[] = "joke_text like :joke_text";
$bind[':joke_text'] = "%{$_GET['text']}%";
}
if ($_GET["author"] && $_GET["author"] != "") {
$conds[] = "author_id = :author_id";
$bind[':author_id'] = "{$_GET['author']}";
}
$stmt = $dbConnection->prepare($query . ($conds ? " WHERE " . implode(" AND ", $conds) : "");
$stmt->execute($bind);
$rows = $stmt->fetchAll();
var_dump($rows);
}
这样,WHERE
子句只有在有重要事情需要时才会出现,并且只在必要时引入AND
语句。