我如何在mysql数据库中搜索多个变量在同一时间与php?



我可以在表单中接收来自用户的变量并将其发送到另一个页面。我得到变量,然后在数据库中搜索。但是,当我试图允许用户同时搜索多个变量(也就是说,他们可以搜索一个或多个项目)时,我遇到了一个问题,我无法以这样的方式编写查询,即当用户输入项目并搜索多时已输入多个项目。这是我的html文档

<form name="search-class-form" id="search-class-form" action="search.php" method="post">
<div class="rafig-margin">
<label for="class_id">calss id: </label>
<input type="number" name="class_id" id="class_id"><br>
</div>
<div class="rafig-margin">
<label for="className">teacher name: </label>
<input type="text" name="name" id="className"/>
</div>
<div class="rafig-margin">
<label for="grade">level: </label>
<input type="number" name="paye" id="grade" min="1" max="13"/>
</div>
<input type="hidden" name="student_id" value="<?= $_GET['id'] ?>"/>
<div class="rafig-margin">
<button class="rafig-button" style="float: left" type="submit" id="search-class">جستجو کن</button>
</div>
</form>
这是我的php页面:
<?php
$condition ="";
if(isset($_POST['id'])&&!empty($_POST['id']))
{$id = $_POST['id'];
$condition .= "WHERE id=".$_POST['id'];
}
if(isset($_POST['name'])&&!empty($_POST['name']))
{$name = $_POST['name'];
$condition .= " WHERE id=".$_POST['name'];
}
if(isset($_POST['paye'])&&!empty($_POST['paye']))
{$level = $_POST['paye'];
$condition .= " WHERE paye=".$_POST['paye'];
}
$student_id = $_POST['student_id'];
include_once ("../classes/conect.php");
$query = "SELECT * FROM calss ".$condition;

我知道如何继续

欢迎使用stackoverflow。

你的代码有点冗余,你最好在循环中这样做。你只需要在第一个条件之后使用一个变量将'WHERE'替换为'AND'。

为了避免SQL注入,@Magnus Eriksson是对的,准备好的语句是最好的方法。否则mysql_real_escape_string()函数将在单引号前加上反斜杠,这将确保您的查询安全。

下面是一个示例代码:

<?php
include_once ("../classes/conect.php");
$keys = ['id', 'name', 'paye', 'student_id'];
$where = ' WHERE ';
$query = 'SELECT * FROM calss';
foreach($keys as $k) {
if (isset($_POST[$key])) {
$query .= $where . $k = ' . mysql_real_escape_string($_POST[$k]);
$where = ' OR '; // don't know if you want "OR" or "AND"
}
}

相关内容

最新更新