我有一個類似于以下示例的數據集: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 關注
- 147 瀏覽
添加回答
舉報
0/150
提交
取消