我有一个类似于以下示例的数据集:
async function helpMe() {
await someService.someObservable.toPromise();
return getDataFromApi();
}
我想要做的是根据我先前选择的列来过滤此数据。例如:
在“ a”列中搜索2。
我尝试为给定的列创建一个变量,并将其附加到WHERE MySQL函数。
这是我的表格:
a, b, c
1, 4, 7
2, 5, 8
3, 6, 9
这是我的PHP / 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>
当我做类似的事情时:
$level = $_GET['level'];
$search = $_GET['search'];
$result_search = "SELECT * FROM insects WHERE '$level' LIKE '%$search%';
$resultado_search = mysqli_query($conexao, $result_search);
OR
$result_search = "SELECT * FROM insects WHERE a LIKE '%$search%';
它在我要显示的列上搜索,这是我想要的,但是当我输入时:
$result_search = "SELECT * FROM insects WHERE b LIKE '%$search%';
什么也没显示。
最后,我想让用户能够搜索给定文本将用于搜索的哪一列。
答案 0 :(得分:1)
您的最后输出是:
$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