时间:2011-10-10 10:44:51

标签: php mysql insert null

我正在尝试使用PHP将NULL插入mySQL数据库。

我有:

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

$myVariable=NULL;
} 

我的数据库字段是十进制的,并且已设置IS NULL。如果输入留空,它会一直恢复到0.00。如果留空,如何设置NULL,所以我可以调用一个php if NULL函数?

编辑如果十进制中的NULL不正确,则调用它?

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

这正确地显示了我的消息,所以如果NULL对于小数而言是无用的,那么我只留下0.00。这是hacky吗?

那些问过的人的SQL结构:

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

4 个答案:

答案 0 :(得分:0)

在SQL端尝试:

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

答案 1 :(得分: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) . "'";
}

答案 2 :(得分:0)

尝试:

$myVariable="NULL";


如果你的代码是:

$val=NULL;
mysql_query("SET @v=$val");
MySQL获得了字符串:

SET @v=0;

就像使用:

echo "SET @v=$val";

答案 3 :(得分:-1)

您可以使用TRIGGER:

过滤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);