我试图用PHP将NULL插入mySQL数据库。
我得到了:
$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,
如果您正在通过附加$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) . "'";
}
在SQL端试试:
$sql = "INSERT INTO `table` (`field1`) VALUES (IF($myVariable == 0, NULL, $myVariable))";
try:
$myVariable="NULL";
。
如果你的代码是:
$val=NULL;
mysql_query("SET @v=$val");
MySQL得到字符串:
SET @v=0;
就像使用:
echo "SET @v=$val";
你可以在MySQL中过滤字段的数据,使用TRIGGER:
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);