2013-11-09 66 views
0

我使用此查询插入记录,并防止0插入snowdepth。我使用NULL,但这是做到这一点的最佳方式?插入没有值为0的记录

if ($snow_mountain==0) {$snow_mountain=null;} 
if ($snow_valley_min==0) {$snow_valley_min=null;} 
if ($snow_valley_max==0) {$snow_valley_max=null;} 

     $rQuery13 = "UPDATE sv_snow 
SET snow_valley_min=$snow_valley_min, snow_valley_max=$snow_valley_max,snow_mountain=$snow_mountain, templo='$templo', temphi='$temphi', lifts_open='$lifts', ski_id=$ski_id 
WHERE res_id=$res_id AND lud='$today'"; 

     echo $rQuery13; 
    $rResult13 = mysql_query($rQuery13); 
+0

这个字段的数据类型是什么? –

回答

1

这是一切都取决于列的数据类型,如果你定义为int,则默认值是0并通过其默认值定义为varcharnull,然后是null

   $rQuery13 = "UPDATE sv_snowalert 
       SET snow_valley_min='".$snow_valley_min."', snow_valley_max='".$snow_valley_max."',snow_mountain='".$snow_mountain."', templo='".$templo."', temphi='".$temphi."', lifts_open='".$lifts."', ski_id='".$ski_id."' 
       WHERE res_id='".$res_id."' AND lud='".$today."' "; 

       echo $rQuery13; 
       $rResult13 = mysql_query($rQuery13); 
0

你总是可以使用数据库设置中设置null作为默认,而不是为那些3

指定任何属性,但空有时是凌乱的,我通常会给-1或虚假或-1000 真的很具体

1

更好的办法是避免使用NULL和替代NULL考虑一些价值你绝不会希望它有。大多数情况下,我最终使用负值。

但出于某种原因,如果你要使用NULL,第一更改列允许NULL,例如:

ALTER TABLE `sv_snowalert` 
     CHANGE `snow_valley_min` 
      `snow_valley_min` INT(11) NULL DEFAULT NULL ; 

然后你就可以插入NULL值,例如:

INSERT INTO `sv_snowalert` (`snow_valley_min`) VALUES (NULL); 

你也可以在您的UPDATE查询中使用IF()函数:

$snow_mountain = 0;    // For test 
$res_id = 1;      // For test 
$today = '2013-11-11 00:00:00'; // For test 

$rQuery13 = " 
UPDATE 
    sv_snow 
SET 
    snow_mountain 
     = IF('" .$snow_mountain ."' = '0' ,NULL ,'" .$snow_mountain ."') 
WHERE 
     res_id = '" .$res_id ."' 
    AND lud = '" .$today ."'"; 

echo $rQuery13;