2011-10-10 57 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);