为了账号安全,请及时绑定邮箱和手机立即绑定

PHP/MySQL 无法过滤我的数据

PHP/MySQL 无法过滤我的数据

PHP
蛊毒传说 2021-09-18 17:08:56
我有一个类似于以下示例的数据集:a, b, c1, 4, 72, 5, 83, 6, 9我想要做的是根据我之前选择的列过滤这些数据。例如:在“a”列中,搜索 2。我尝试为给定的列创建一个变量并将其附加到 WHERE MySQL 函数。这是我的表格:<form action="buscar.php" method="get">        <input type="text" name="search" placeholder="">            <select name="level">                <option value="">Select an option</option>                <option value="a">a</option>                <option value="b">b</option>                <option value="c">c</option>            </select>        <input type="submit" value="Procurar">         </form>这是我的 PHP/MySQL 搜索代码:$level = $_GET['level'];$search = $_GET['search'];$result_search = "SELECT * FROM insects WHERE '$level' LIKE '%$search%';$resultado_search = mysqli_query($conexao, $result_search);当我做类似的事情时:$result_search = "SELECT * FROM insects WHERE a LIKE '%$search%';或者$result_search = "SELECT * FROM insects WHERE b LIKE '%$search%';它在我指示的列上搜索,这正是我想要的,但是当我输入时:$result_search = "SELECT * FROM insects WHERE '$level' LIKE '%$search%';它什么也没显示。最后,我想要的是用户能够搜索给定文本将用于搜索的哪一列。
查看完整描述

1 回答

?
倚天杖

TA贡献1828条经验 获得超3个赞

你最后的输出是:

$result_search = "SELECT * FROM insects WHERE '$level' LIKE '%$search%';

在 SQL 中转换为:

SELECT * FROM insects WHERE 'a' LIKE '%$search%

而你想要实现的是:

SELECT * FROM insects WHERE a LIKE '%$search%

因此,您必须删除 $level 周围的报价,如下所示:

$result_search = "SELECT * FROM insects WHERE $level LIKE '%$search%';

我讨厌成为那个人,但你应该看看SQL INJECTION


查看完整回答
反对 回复 2021-09-18
  • 1 回答
  • 0 关注
  • 130 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信