我有一个ORDER_TABLE来存储所有ORDER(order_id,order_name)
ORDER_ITEMS_TABLE存储每个订单的所有项目(order_item_id,order_id,item_name)。每行都是一个项目,订单在ORDER_ITEMS_TABLE
中有很多行我有一个输入,允许用户输入项目列表,用逗号分隔(item1,item2,item3) 当用户提交时,我应该从ORDER_TABLE获得包含上述所有项目的所有订单(item1 AND item2 AND item3)
请帮帮我
答案 0 :(得分:3)
确保在将用户添加到查询中之前解析用户的逗号分隔项列表,否则您将对SQL注入攻击开放。
SELECT ot.order_name, oit.item_name
FROM ORDER_ITEMS_TABLE oit
INNER JOIN ORDER_TABLE ot ON ot.order_id = oit.order_id
WHERE oit.order_item_id IN (your,list,of,items)
答案 1 :(得分:1)
扩展@Crontabs答案:
$items = $_POST['items'];
$item_array = explode(',',$items);
foreach ($item_array as $item)
{
$item = mysql_real_escape_string($item);
}
$items = implode("','", $item_array);
$query = "SELECT ot.order_name, oit.item_name
FROM ORDER_ITEMS_TABLE oit
INNER JOIN ORDER_TABLE ot ON ot.order_id = oit.order_id
WHERE oit.order_item_id IN ('$items') ";
现在您已正确转义这些CSV项目。