我有一个类似于以下示例的数据集: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
- 1 回答
- 0 关注
- 130 浏览
添加回答
举报
0/150
提交
取消