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}'";
}