2011-10-10 88 views
0

我試圖用PHP插入NULL到mySQL數據庫。試圖插入NULL如果輸入字段留空

我有:

$myVariable=$_POST[inputfield];   
if(!is_numeric($myVariable) || $myVariable==0){ 

$myVariable=NULL; 
} 

我的數據庫字段是小數,而IS NULL已設置。如果輸入保持空白,它將保持恢復到0.00。如果留空,我如何設置NULL,所以我可以調用一個PHP如果NULL函數?

編輯如果在十進制中爲NULL,調用是不正確的?

<? if ($debit==NULL || $debit=="0.00") {echo 'Awaiting Cost';} 
elseif ($debit != NULL || $debit!="0.00") { echo "£$debit";}?> 

這顯示我的消息正確,所以如果如果NULL是無用的小數我只會離開0.00。這是哈克嗎?

SQL結構對於那些誰問:

`myTableField` decimal(10,2) default NULL, 
+0

如何該列是否定義? – ssedano

+1

向我們展示你的sql語句。 –

+0

問題出在你的sql或你的數據模型上。顯示其餘的代碼。 –

回答

0

如果您是通過附加$myVariable變量的值組成的SQL語句,那麼你應該看看它是否爲NULL,並相應地修改SQL語句。

例如,如果你的代碼是一樣的東西:

$sql .= "myVariable = '" . mysql_real_escape_string($myVariable) . "'"; 

,那麼你應該將其更改爲類似:

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

嘗試在SQL方面:

$sql = "INSERT INTO `table` (`field1`) VALUES (IF($myVariable == 0, NULL, $myVariable))"; 
0

嘗試:

$myVariable="NULL"; 


如果你的代碼是:

$val=NULL; 
mysql_query("SET @v=$val"); 

了MySQL得到的字符串:

SET @v=0; 

這就像使用:

echo "SET @v=$val"; 
-1

您可以過濾在MySQL本身的字段的數據,使用觸發器:

CREATE TRIGGER table1_update BEFORE UPDATE ON table1 FOR EACH ROW SET 
    NEW.num=IF(NEW.num=0 ,NULL,NEW.num), 
    NEW.txt=IF(NEW.txt="",NULL,NEW.txt); 
CREATE TRIGGER table1_create BEFORE INSERT ON table1 FOR EACH ROW SET 
    NEW.num=IF(NEW.num=0 ,NULL,NEW.num), 
    NEW.txt=IF(NEW.txt="",NULL,NEW.txt);