2014-02-06 20 views
0

我有很多input框。每個輸入框都與INT或DECIMAL MySQL字段鏈接,並顯示在文本框內。使用空值/無值更新INT/DECIMAL字段

每個INT/DECIMAL的默認值是null,這樣當用戶第一次打開頁面時,文本框內就不會顯示任何內容。

我有一個更新查詢,將每個輸入框的值更新爲受尊敬的MySQL字段。

我的問題是,對於沒有得到任何輸入的每個輸入框,字段的值從NULL切換到0

我很難找出一種方法來將未觸摸的輸入更新爲NULL,並且沒有將所有未觸及的值都更改爲0.任何人都可以提供幫助嗎?


定義我的變量基本是這樣:

if(nullBlank($_POST['variable1']) == false) 
    $variable1 = $_POST['variable1']; 
else 
    $variable = ""; 

我也試過:$variable = null;


我的更新查詢基本上是這樣的:

mysql_query("UPDATE `table` SET `variable1`= '" . $variable1 . "' WHERE something = something 

我的nullBlan k()函數

function nullBlank($data) 
{ 
    if(is_null($data)) 
     $value = true; 
    elseif(strlen($data) <= 0) 
     $value = true; 
    elseif($data === "") 
     $value = true; 
    else 
     $value = false; 

return $value; 
} 
+0

http://stackoverflow.com/questions/4054638/null -in-query-values-results-in-0-00-in-mysql?rq = 1第一個答案似乎相當準確,也是這個http://stackoverflow.com/questions/7711649/trying-to-insert -null-if-input-field-left-blank?rq = 1有一些代碼可以檢查並正確傳入空值 – duindain

+0

@duindain我認爲是這種情況。但是,如果我確實在文本框中輸入了某些內容,那麼我如何確保該內容能夠通過。因爲如果我有'1'的值,不必做「1」?我有大約100個值通過了SQL – bryan

+1

如果它也是SQL中的一個數字,那麼'\'variable1 \'= 1'很好。 –

回答

2

將$ variable1設置爲"NULL"(字符串)。這樣它將在查詢中最終成爲NULL,這是SQL中表示NULL的內容。

+0

你知道一種方法,我可以構造我的UPDATE語句來允許這個,但也允許一個整數/十進制數。我有大約10-100個變量通過這條更新聲明 – bryan

+0

由於NULL和數字都不必在SQL中引用,它應該按原樣工作。還是我沒有得到qeustion? –

+1

啊,如果數字不需要在SQL中引用,那麼問題就解決了:) – bryan

1

也許你爲null檢查代碼更改

if (is_null($myVariable)) { 
    $sql .= "$columnName= NULL"; 
} else { 
    $sql .= "$columnName= '" . mysql_real_escape_string($myVariable) . "'"; 
} 

然後調用這個對每個值和它要麼是空或引用它

+1

+1用於轉義輸入。真的,@ bryan,你應該在用戶輸入數據之前將其輸入到查詢中,以避免SQL注入攻擊。 (除非你使用準備好的語句,這將更好^^) –

+0

不要擔心我是,只是保持簡單的概念證明。謝謝您的幫助 – bryan