gpt4 book ai didi

php - 使用 PHP/MySQL 进行搜索过滤

转载 作者:IT老高 更新时间:2023-10-29 00:10:12 24 4
gpt4 key购买 nike

我正在尝试在我的献血者应用程序中创建搜索/过滤选项。可以按性别、姓名、血型或选择所有三项来搜索捐赠者。这是我的代码

function search_donar($_POST) {

$by_name = $_POST['by_name'];
$by_sex = $_POST['by_sex'];
$by_group = $_POST['by_group'];
$by_level = $_POST['by_level'];

$search_query = "SELECT * FROM donar WHERE";
if($by_name !="") {
$search_query .= " name='$by_name'";
}
if($by_sex !="") {
$search_query .= " sex='$by_sex'";
}
if($by_group !="") {
$search_query .= " blood_group='$by_group'";
}
if($by_level !="") {
$search_query .= " e_level='$by_level'";
}
$search_query;
$result = mysql_query($search_query);

return $result;
}

这是html

if(isset($_POST['submit'])) {

$retrived_result = $donar->search_donar($_POST);

}

<form action="" method="post">
<table width="100%" border="0" style="border:none;">
<tr>
<td><label>Name:&nbsp;</label><input type="text" name="by_name" /></td>
<td><label>Sex:&nbsp;</label><input type="text" name="by_sex" /></td>
<td><label>Blood Group:&nbsp;</label><input type="text" name="by_group" /></td>
<td><label>Level:&nbsp;</label><input type="text" name="by_level" /></td>
<td><input class="button" type="submit" name="submit" value="Search" /></td>
</tr>
</table>
</form>

单一过滤效果很好。但是要过滤我使用的所有内容 AND ,但它给了我错误。谁能帮忙?

提前致谢

最佳答案

像所有其他帖子一样,您需要使用 AND 附加所有条件,就像这样。这是迄今为止最干净的答案。请记住,尽管使用 mysqli OOP 方式而不是旧的 mysql,但要真正转义您的字符串。只是一个建议。

这是一个典型查询的示例。

正确方法:

SELECT * FROM donar WHERE name='dxenaretionx' AND sex='M';

你的做法

SELECT * FROM donar WHERE name='dxenaretionx' sex='M';

代码:

function search_donar($_POST) {
$by_name = $_POST['by_name'];
$by_sex = $_POST['by_sex'];
$by_group = $_POST['by_group'];
$by_level = $_POST['by_level'];

//Do real escaping here

$query = "SELECT * FROM donar";
$conditions = array();

if(! empty($by_name)) {
$conditions[] = "name='$by_name'";
}
if(! empty($by_sex)) {
$conditions[] = "sex='$by_sex'";
}
if(! empty($by_group)) {
$conditions[] = "blood_group='$by_group'";
}
if(! empty($by_level)) {
$conditions[] = "e_level='$by_level'";
}

$sql = $query;
if (count($conditions) > 0) {
$sql .= " WHERE " . implode(' AND ', $conditions);
}

$result = mysql_query($sql);

return $result;
}

关于php - 使用 PHP/MySQL 进行搜索过滤,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13206530/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com