2012-09-20 60 views
1

我有一個將POST數據發送到php文件的html表單。 在php中,我正在查詢mysql數據庫。在數據庫中我有int列接受null。如何將空表單字段保存爲空?

問題是當web表單域爲空時,我想將null保存到數據庫。 我試圖在建立查詢前進行檢查

if (empty($licence)) 
     $sql_query.="null,r1="; 
    else $sql_query.="'".$_POST["licence"]."',r1="; 

它的工作。但是如果用戶在表單域中寫入0,數據庫中將保存爲空,這是錯誤的。如果用戶輸入0,我想保存0,但如果該字段爲空,我想保存爲空。如何解決這個問題? 的問題是,如果字段爲空,0將被作爲發送數據後...

回答

0

empty()功能(PHP手冊)如果VAR存在,並且有一個非空,非零值

返回FALSE。否則返回TRUE。

下面的事情被認爲是空的:

"" (an empty string) 
0 (0 as an integer) 
0.0 (0 as a float) 
"0" (0 as a string) 
NULL 
FALSE 
array() (an empty array) 
$var; (a variable declared, but without a value) 

在你的情況下,使用:

if (!strlen($licence)) 
    $sql_query.="null,r1="; 
else $sql_query.="'".$_POST["licence"]."',r1="; 

代替

+0

問題是,如果字段爲空,0將作爲發佈數據發送...我的願望是保存0,如果用戶輸入它並保存爲空如果字段爲空。 –

+0

不,它不會。如果該字段爲空,則會將空字符串作爲POST數據發送。 **除非**你的框架做了一些額外的處理(例如,代替空格式字段的JavaScript,它用0代表數字)或者PHP代碼執行相同的操作,空字段將作爲空字符串接收。然後你可以使用我的代碼來實現你的結果。 – Vlad

+0

謝謝!我知道了! –

0

嘗試

$sql_query.=($_POST["licence"]?"'".$_POST["licence"]."'":NULL).",r1="; 
-1

,如果您檢查空(0),你會得到錯誤的(如手冊中所描述的)

if (isset($licence) && empty($licence)) { 
    // it is empty or 0 
} elseif(isset($licence)) { 
    // it is something 
} 
+0

這不適用於空字符串。對於「」和「0」,它將進入**如果**分支,OP顯然不需要。由於他通過POST接收數據,因此當用戶不在字段中輸入數據時,他將收到一個空字符串。 – Vlad

+0

你是對的,不知何故,我以爲他想0作爲NULL,需要更多的咖啡:-) –

+0

弗拉德是正確的。我想0在數據庫中,如果用戶輸入0,但如果用戶輸入什麼,我想空... 問題是,在發送0作爲POST數據的空字段和0 .. –

0

我想你可能在牌照字段的默認值爲0數據庫表。因此,當該字段爲空時,將記錄保存到數據庫時需要0。

使默認值爲NULL.It將清除問題。

相關問題