我正在嘗試從 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')...
1 回答

繁華開滿天機
TA貢獻1816條經驗 獲得超4個贊
WHERE category_name IN ('$selected_categories')
是錯誤的——該參數將被視為一個字符串文字,而不是一列單獨的文字。
使用WHERE FIND_IN_SET(category_name, '$selected_categories')
。
中的單獨值$selected_categories
必須嚴格用逗號分隔(如果使用其他分隔符則替換它)。
- 1 回答
- 0 關注
- 177 瀏覽
添加回答
舉報
0/150
提交
取消