MySQL PHP,SELECT WHERE条件是一个数组

我正在尝试从 db WHERE 条件是一个数组中选择产品。我的方法在声明数组时有效,但在提交表单后生成数组元素时无效。


    $selected_categories = array();        //create empty array


    if(isset($_POST['submit'])){          //if form is submitted


        $name = $_POST['category'];


        foreach ($name as $category){

            $selected_categories[] = $category;          //add all checked checkboxes values into the array, every single $category element is text i.e. programming science

        }



        $get_products = "SELECT P.*, C.category_name, GROUP_CONCAT(category_name SEPARATOR ', ') AS cat FROM products P NATURAL JOIN categories C NATURAL JOIN product_to_categories WHERE category_name IN ('$selected_categories') GROUP BY product_name ORDER BY 1 DESC LIMIT $start_from,$per_page";

    }

问题(我认为)在数组中,因为当我使用数组中的一个元素时:


... WHERE category_name IN ('$selected_categories[1]')...

工作正常它也在使用时工作:


... WHERE category_name IN ('programming', 'science')...


MMTTMM
浏览 148回答 1
1回答

繁华开满天机

WHERE category_name IN ('$selected_categories')是错误的——该参数将被视为一个字符串文字,而不是一列单独的文字。使用WHERE FIND_IN_SET(category_name, '$selected_categories')。中的单独值$selected_categories必须严格用逗号分隔(如果使用其他分隔符则替换它)。
打开App,查看更多内容
随时随地看视频慕课网APP