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

Php 使用多个where条件构建动态mysql查询,php,mysql,Php,Mysql,我有下面的问题,它的工作很好。 但是如果$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_

我有下面的问题,它的工作很好。 但是如果
$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子句,您可以从


这里的另一个问题是,这种性质的永无止境的字符串连接会导致很难跟踪bug。

您是否意识到这是一件非常危险的事情?您的数据库被输入意外内容的人破坏的可能性太高了。至于where子句,您可以从


这里的另一个问题是,这种性质的永无止境的字符串连接会导致很难跟踪错误。

您必须确定where变量是否是数组,如果是数组,您必须对其进行迭代,并将where子句作为字符串写入新变量,然后将其打印到SQL查询语句中。您需要
其中位于(数组元素)
用于对多个值进行筛选。如果数组元素是文本,则需要将它们用引号括起来。无论元素类型如何,值之间都需要逗号分隔符。谢谢,我更新了代码。有人能给我正确的代码吗。
$where
是什么东西的数组?价值观条件一对字段值?其他?您必须确定where变量是否是数组,如果是,您必须对其进行迭代,并将where子句作为字符串写入新变量,然后将其打印到SQL查询语句中。您需要一个
where in(数组元素)
来过滤多个值。如果数组元素是文本,则需要将它们用引号括起来。无论元素类型如何,值之间都需要逗号分隔符。谢谢,我更新了代码。有人能给我正确的代码吗。
$where
是什么东西的数组?价值观条件一对字段值?其他的?
if(is_array($criteria)) {
    $query.=" WHERE `".$where." IN (" . join(",", $criteria) . ")";
}
else {
    $query.=" WHERE `".$where." = '{$criteria}'";
}