使用多个where条件构建动态mysql查询


build dynamic mysql query with multiple where condition

我有下面的查询,它运行良好。但如果$where是阵列,它将失败,解决方案是什么?

 public function update($tbl_name, $data = NULL, $where = NULL)
{
    if ($data) {
        $data_key = array_keys($data);
        $where_key = array_keys($where);
        $query = "UPDATE " . $data['db_table'] . " SET ";
        foreach ($data_key as $key) {
            $query .= "`" . $key . "` = '" . $data[$key] . "' ";
        }
        //todo fix that for multi where
        $query.=" WHERE `".$where."`=".$where[''];
        return $this->query($query);
    }
    return false;
}

你确实意识到你正在做的是一件相当危险的事情吗?你的数据库被某人输入意外内容的可能性太高了。至于where子句,您可以从is_array 获得帮助

if(is_array($criteria)) {
    $query.=" WHERE `".$where." IN (" . join(",", $criteria) . ")";
}
else {
    $query.=" WHERE `".$where." = '{$criteria}'";
}

这里的另一个问题是,这种性质的永不结束的字符串串联会导致非常难以跟踪的错误。