2014-03-18 58 views
0

我有一個包含許多可選字段的表單。我使用PHP和PDO從表單中收集數據並將其存儲在數據庫中。動態PDO mysql更新

由於一些可選字段可能爲空,我只想存儲實際上具有價值的輸入。我可以很容易地識別出有價值的輸入,但是沒有使用大量的IF語句,我似乎無法找到一種方法,只要將值插入數據庫(如果存在)。

我現在的PDO看起來是這樣的:

$data = array($var1, $var2, $var3, $var4, $var5, $var6); 

$STH = $DBH->("INSERT INTO users (first, last, addr, city, email, phone) values (?, ?, ?, ?, ?, ?)"; 
$STH->execute($data); 

有沒有一種方法,如果陣列中的值存在只更新一列? 例如:如果$ var3和$ var4爲空,那麼數據庫中沒有爲「addr」和「city」存儲什麼內容?

+0

看看寫入存儲過程。 –

+0

在mySQL數據庫中設置默認值,然後您可以提交空值或任何值 – Chitowns24

+1

插入空值有什麼問題? –

回答

0

對於任何其他菜鳥在那裏,原來插入空值到數據庫是可以接受的,只要你有你的MySQL行最多允許空。您可能還想給它們一個默認值null。

看到這個職位:
MySQL, better to insert NULL or empty string?

感謝大家的幫助。

-1

理想情況下,您應該將表設置爲不允許這些字段爲空值。否則,在PHP端你可以只檢查是否值已定,不爲空:

if (isset($var1, $var2, $var3, $var4, $var5, $var6)) { 
    $data = array($var1, $var2, $var3, $var4, $var5, $var6); 
    $STH = $DBH->("INSERT INTO users (first, last, addr, city, email, phone) values (?, ?, ?, ?, ?, ?)"; 
    $STH->execute($data); 
} 

除非你想插入還是?在這種情況下只要初始化值爲空字符串或什麼:

$data = array($var1?:"", $var2?:"", $var3?:"", $var4?:"", $var5?:"", $var6?:"");