繁体   English   中英

PDO。我如何使用此功能?

[英]PDO.How i can use this function?

我是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中写什么。对不起,当我的英语不太好时。

我在其他答案中使用了此功能,因为它存在于我链接的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); 
}

此功能旨在使插入件更容易,更安全。 但是,如果您不熟悉使用函数,则最好选择上一个答案中的其他解决方案。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM