动态MySQL查询


Dynamic MySQL query

我试图创建一个动态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总是显示空白。解决方案是什么?

你有几个问题。

  1. 你没有转义输入,所以你受到SQL注入或语法错误。

  2. LIKE参数需要加引号

  3. 每次通过循环重写$var而不是附加到它。

  4. 表达式周围没有空格

  5. 你把%放在整个$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";