动态MySQL查询

时间:2014-07-14 20:57:38

标签: php mysql

我正在尝试创建一个动态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 个答案:

答案 0 :(得分:2)

你有几个问题。

  1. 您没有转义输入,因此您会受到SQL注入或语法错误的影响。

  2. 您需要在LIKE参数附近加上引号。

  3. 每次循环都会覆盖$var而不是附加到它。

  4. 你没有在表达式周围放置任何空格。

  5. 您将%放在整个$var周围,它应位于LIKE参数内。

  6. 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";