Mysql IN()不起作用

时间:2013-09-12 15:58:44

标签: php mysql

我有一个复选框表单,它传递一组id值。然后我像这样内爆阵列:

$ship = $_POST['result'];
$array=implode(",", $ship);
$shipping=ship_update($array);

Mysql查询功能如下所示:

function ship_update($array){
    global $MEMS;
    echo $array;
    $query="SELECT * FROM Inventory
        WHERE MEMS_ID IN ('$array')
            ORDER BY WAFER ASC, RC ASC";
    $shipping=$MEMS -> exec($query);
    return $shipping;
}

当我运行此代码时,$ shipping返回一个空查询。我做错了什么?

3 个答案:

答案 0 :(得分:2)

这应该是

$array = "'" . implode("','", $ship) . "'";

在您的查询中,

$query="SELECT * FROM Inventory
        WHERE MEMS_ID IN ($array)    // remove the single quotes to
        ORDER BY WAFER ASC, RC ASC"; // avoid syntax error

警告,使用sql注入仍然容易受到攻击

答案 1 :(得分:1)

尝试不使用'单引号

的查询
SELECT * FROM Inventory
        WHERE MEMS_ID IN ($array)
            ORDER BY WAFER ASC, RC ASC

答案 2 :(得分:0)

数组中间没有任何单引号。改变

$array=implode(",", $ship);

$array=implode("','", $ship);