0

私は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に何を書かなければならないのかわかりません。私の英語があまり上手ではないときは申し訳ありません。

4

1 に答える 1

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); 
}

この機能は、インサートをより簡単かつ安全にすることを目的としています。ただし、関数の使用に慣れていない場合は、前の回答の他の解決策を選択することをお勧めします。

于 2013-03-03T16:14:37.523 に答える