попытка INSERT NULL, если поле ввода осталось пустым

Я пытаюсь вставить NULL в базу данных mySQL с помощью PHP.

У меня есть:

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

Поле моей базы данных является десятичным, и установлено значение 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. Это хакки?

Структура SQL для тех, кто спросил:

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

Если вы составляете инструкцию SQL, добавляя значение переменной $myVariable , вы должны посмотреть, является ли она 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))"; 

пытаться:

 $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);