PHP/MySQL 无法过滤我的数据

我有一个类似于以下示例的数据集:


a, b, c

1, 4, 7

2, 5, 8

3, 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%';

它什么也没显示。


最后,我想要的是用户能够搜索给定文本将用于搜索的哪一列。


蛊毒传说
浏览 131回答 1
1回答

倚天杖

你最后的输出是:$result_search&nbsp;=&nbsp;"SELECT&nbsp;*&nbsp;FROM&nbsp;insects&nbsp;WHERE&nbsp;'$level'&nbsp;LIKE&nbsp;'%$search%';在 SQL 中转换为:SELECT&nbsp;*&nbsp;FROM&nbsp;insects&nbsp;WHERE&nbsp;'a'&nbsp;LIKE&nbsp;'%$search%而你想要实现的是:SELECT&nbsp;*&nbsp;FROM&nbsp;insects&nbsp;WHERE&nbsp;a&nbsp;LIKE&nbsp;'%$search%因此,您必须删除 $level 周围的报价,如下所示:$result_search&nbsp;=&nbsp;"SELECT&nbsp;*&nbsp;FROM&nbsp;insects&nbsp;WHERE&nbsp;$level&nbsp;LIKE&nbsp;'%$search%';我讨厌成为那个人,但你应该看看SQL INJECTION
打开App,查看更多内容
随时随地看视频慕课网APP