我正在尝试使用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,
答案 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);