我爲我的用戶創建了多步表單。他們將被允許更新任何或所有的字段。所以,我需要發送這些值,檢查它們是否已設置,如果有,請運行UPDATE
。以下是我迄今爲止:更新使用PDO的數組
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]);
}
}
,但我會怎麼寫prepare
聲明,如果我不能確定的價值觀?
如果我對這個問題完全錯誤,請指出正確的方向。謝謝。
你可以使用'SET firstName = IFNULL(?,firstName)',參見http://stackoverflow.com/question s/2675968/sql-how-can-i-update -a-value-on-a-column-only-if-that-value-is-null – mario 2013-03-08 22:54:29
@mario謝謝,好主意! – hek2mgl 2013-03-08 22:55:26
@mario感謝您的提示!如果'IFNULL(NULL,10);'返回'10',我不確定這會對我的情況有所幫助,但我仍然需要知道'10'的值,對嗎?我只是試圖阻止'UPDATE'發生,如果一個項目的值是'NULL' – 2013-03-08 23:04:03