【发布时间】:2016-05-11 18:31:25
【问题描述】:
我正在尝试创建一个包含多个搜索字段的数据库,但如果有一个空字段,它会显示整个数据库。我怀疑这是因为查询中的 OR,我不知道如何解决它。
<?php
if (isset($_POST['Submit']))
{
$con = mysqli_connect();
if (mysqli_connect_errno())
{
echo "Failed to connect to MySQL: " . mysqli_connect_error();
}
$surname = $_POST['surname'];
$firstname = $_POST['firstname'];
$maiden = $_POST['maiden'];
$birth = $_POST['birth'];
$death = $_POST['death'];
$keyword = $_POST['keyword'];
$sql = "SELECT * FROM obits WHERE surname LIKE '%" . $surname . "%' OR firstname LIKE '%" . $firstname . "%' OR maiden LIKE '%" . $maiden . "%' OR birth LIKE '%" . $birth . "%' OR death LIKE '%" . $death . "%' OR obittext LIKE '%" . $keyword . "%'";
$result = mysqli_query($con, $sql);
再往下我有这个:
if (isset($result) && $result->num_rows > 0);
然后按照表格等。我想我在这里有所有相关信息。有什么建议?请使用英语而不是程序员,我对此很陌生。提前致谢!
【问题讨论】:
-
“请使用英语而不是程序员,” - 那部分让我大声笑,嗯。回到正题。不确定您所说的“显示整个数据库”是什么意思 - 但是是的,由于您的
Query中有大量ORs并在每一列上进行Wildcard搜索,它会产生很多结果。 -
如果有空白字段,则显示数据库中的每个条目
-
为什么不在将值发送到查询之前验证值?
标签: php html mysql database forms