我试图创建一个动态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
总是显示空白。解决方案是什么?
你有几个问题。
-
你没有转义输入,所以你受到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";