2014-04-12 75 views
0

什麼是更好的形式數據處理系統?檢查空字段或插入一切?

(在這種情況下,將數據插入數據庫時​​)。

  • 檢查哪些文本字段已被填充並僅插入這些字段。

  • 插入所有數據,甚至是來自文本字段的空值。數據庫值在兩種情況下都是空的,對嗎?

我通常使用第一種方法,但在這種情況下,我有領域的很多,真的不想寫代碼來檢查每一個。

回答

1

By The Way,「」不是NULL,「」是空字符串,空值根本就沒有值。

您可以通過循環數據集來驗證數據是否存在,並驗證每個變量是否存在「」,然後在插入數據庫之前變爲NULL。

當窗體中的文本將爲NULL時唯一的情況是,如果他沒有進入窗體,那麼PHP會將其視爲null。

最佳實踐是找到一種以編程方式循環訪問數據並執行所需的所有驗證的方法,而不是寫入每一條數據。

$safe_array = array(); 

foreach($data as $i => $v) { 
    if($v=="") { 
     $safe_array[$i] = null; 
    } 
    else if (custom_filter($v)) { 
     $safe_array[$i] = null; 
    } else { 
     $safe_array[$i] = $v; 
    } 
    } 
0

無論如何你必須檢查它們,對嗎?你還可以知道他們是否應該插入?

或者你的意思是某些字段完全沒有被表單使用,所以它們總是空的?在這種情況下,您不需要將它們包含在插入語句中。

+0

字段是可選的。 (用戶決定要填寫哪一個)。我的想法是無論如何插入它們,數據庫記錄在兩種情況下都是空的,如果你不插入或者如果你插入一個「空字符串」。我對嗎? –

+1

無論如何我會插入它們。就像我說的那樣,無論如何你都必須檢查它們,看它們是否空着。儘管在'NULL'(意思是沒有值)和一個空字符串之間有區別。一個空字符串是一個字符串類型的值,長度爲0個字符。 'NULL'完全沒有價值。在MySQL中,兩者之間存在着差異,儘管Oracle認爲它們是相同的。 – GolezTrol