我是PDO的新手,我写了这段代码。但这段代码不安全。
function update_user($update_data) {
global $pdo;
$update = array();
foreach($update_data as $field=>$data){
$update[] = '`'. $field.'` = \''. $data.'\'';
}
$query = $pdo->prepare("UPDATE users SET " . implode(', ', $update) ."WHERE user_id = " .$_SESSION['user_id']);
$query->execute();
}
我向互联网询问有关此代码的信息并成为:
function update_user($update_data) {
global $pdo;
$sql = "UPDATE users SET ".pdoSet($update_data,$values)." WHERE id = :id";
$stm = $pdo->prepare($sql);
$values["id"] = $_SESSION['user_id'];
$stm->execute($values);
}
但是,当我的英语不太好时,我不知道我必须在函数pdoSet.Sorry中写什么。
答案 0 :(得分:0)
我在我的另一个答案中使用了这个函数,因为它存在于我链接的PDO标记wiki中 但好的,我可以在这里粘贴它。
function pdoSet($fields, &$values, $source = array()) {
$set = '';
$values = array();
if (!$source) $source = &$_POST;
foreach ($fields as $field) {
if (isset($source[$field])) {
$set.="`".str_replace("`","``",$field)."`". "=:$field, ";
$values[$field] = $source[$field];
}
}
return substr($set, 0, -2);
}
此功能旨在使插入更容易,更安全。 但是,如果您不熟悉使用函数,最好从上一个答案中选择其他解决方案。