我正在尝试创建一个动态sql查询,将我的cat
列与用户在表单中输入的内容进行比较。我的想法是,我将能够获取动态数组值,然后将它们与cat
列进行比较。这就是我试图做的事情:
// Loop to get the array of values from form
$get_arr = $_GET;
foreach ($get_arr as $get) {
$var = "AND cat LIKE $get";
}
// SQL query
$sql = "SELECT * FROM items
WHERE title LIKE 'this'
AND description LIKE 'that'
'%$var%'";
它不起作用 - $var
总是显示为空白。解决方案是什么?
答案 0 :(得分:2)
你有几个问题。
您没有转义输入,因此您会受到SQL注入或语法错误的影响。
您需要在LIKE
参数附近加上引号。
每次循环都会覆盖$var
而不是附加到它。
你没有在表达式周围放置任何空格。
您将%
放在整个$var
周围,它应位于LIKE
参数内。
foreach ($get_arr as $get) {
$get = mysqli_real_escape_string($conn, $get);
$var .= " AND cat like '%$get%'";
}
$sql = "SELECT * FROM items
WHERE title LIKE '%this%'
AND description LIKE '%that%'
%var";