我有下面的查询,它运行良好。但如果$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}'";
}
这里的另一个问题是,这种性质的永不结束的字符串串联会导致非常难以跟踪的错误。