php – 使用PDO更新数组
发布时间:2020-12-13 18:10:34 所属栏目:PHP教程 来源:网络整理
导读:我正在为我的用户创建一个多步骤表单.他们将被允许更新任何或所有字段.所以,我需要发送值,检查它们是否已设置,如果是,则运行UPDATE.这是我到目前为止: public function updateUser($firstName,$lastName,$streetAddress,$city,$state,$zip,$emailAddress,$i
我正在为我的用户创建一个多步骤表单.他们将被允许更新任何或所有字段.所以,我需要发送值,检查它们是否已设置,如果是,则运行UPDATE.这是我到目前为止:
public function updateUser($firstName,$lastName,$streetAddress,$city,$state,$zip,$emailAddress,$industry,$password,$public = 1,$phone1,$phone2,$website,){ $updates = array( 'firstName' => $firstName,'lastName' => $lastName,'streetAddress' => $streetAddress,'city' => $city,'state' => $state,'zip' => $zip,'emailAddress' => $emailAddress,'industry' => $industry,'password' => $password,'public' => $public,'phone1' => $phone1,'phone2' => $phone2,'website' => $website,); 这是我的PDO(嗯,开始尝试) $sth = $this->dbh->prepare("UPDATE user SET firstName = "); //<---Stuck here $sth->execute(); $result = $sth->fetchAll(PDO::FETCH_ASSOC); return $result; 基本上,我如何创建UPDATE语句,以便它只更新数组中非NULL的项? 我想过运行这样的foreach循环: foreach($updates as $key => $value) { if($value == NULL) { unset($updates[$key]); } } 但如果我不确定这些值,我该如何编写准备语句? 如果我完全错了,请指出我正确的方向.谢谢.
首先,使用
array_filter 删除所有NULL值:
$updates = array_filter($updates,function ($value) { return null !== $value; }); 其次,绑定参数,使您的生活更轻松: $query = 'UPDATE table SET'; $values = array(); foreach ($updates as $name => $value) { $query .= ' '.$name.' = :'.$name.','; // the :$name part is the placeholder,e.g. :zip $values[':'.$name] = $value; // save the placeholder } $query = substr($query,-1).';'; // remove last,and add a ; $sth = $this->dbh->prepare($query); $sth->execute($values); // bind placeholder array to the query and execute everything // ... do something nice :) (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |