php mysql中不同的输入项

时间:2014-03-12 00:55:40

标签: php mysql

我用html创建了一个html表单,并输入了item,comment和visible。我想做的是能够通过创建一个循环使用这些协议的代码将这些变量输入到sql:      如果所有字段都是空白的,则全部填充或只填充一个或两个,因此它只能将填充的数据添加到mysql表中。      我使用的代码之一的例子是

            if($nitem != ' ' and $comment != ' ')
{$query = "UPDATE shop.titem  SET 
item = '$nitem', comment = '$comment', visible = $visible
WHERE titem.item ='$item'";
$sqlhandle = mysql_query($query, $connection);}
if (!$sqlhandle){echo 'create all failed' . mysql_error();
}else{break;}

我使用了休息但是它一直在循环完成所有查询,这就是我需要帮助的地方。像往常一样,我是一个完全的菜鸟,所以如果你对我有耐心和理解,我会很感激。谢谢。

更新:我做了一个回声来生成sql并返回一个语句,其中所有代码都运行,即如果只有项目字段已编辑到例如:牛奶,它给我作为牛奶的项目,评论为空白和可见为1(我将默认值设置为空白,如果字段未填充任何内容,则显示为1)

完整代码

    $item = $_POST['item'];
$nitem = $_POST['nitem'];
$comment = $_POST['comment'];
if(!isset($_POST['visible']))
{$visible = 1;}
else
{$visible = $_POST['visible'];}


     //for when all is true
if($nitem != ' ' and $comment != ' ')
{$query = "UPDATE shop.titem  SET 
item = '$nitem', comment = '$comment', visible = $visible
WHERE titem.item ='$item'";
$sqlhandle = mysql_query($query, $connection);}
if (!$sqlhandle){echo 'create all failed' . mysql_error();
}else{break;}



//for when all is false
if($nitem = ' ' and $comment = ' ' )
{echo 'please go back and edit a field.';
}else{break;}


//for when nitem and comment is true
if($nitem != ' ' and $comment != ' ')
{$query = "UPDATE shop.titem SET item = $nitem, comment = $comment
WHERE item = $item";
$sqlhandle = mysql_query($query, $connection);}
if (!$sqlhandle){echo 'item and comment write failed' . mysql_error();
}else{break;}


//for when nitem only is true
if($nitem !=' ' and $comment = ' ')
{$query = "UPDATE shop.titem SET item = $nitem
WHERE item = $item";
$sqlhandle = mysql_query($query, $connection);}
if (!$sqlhandle){echo 'item write failed' . mysql_error();
}else{break;}


//for where comment only is true
if($comment != ' ' and $nitem = ' ')
{$query = "UPDATE shop.titem SET 
        comment = $comment WHERE titem.item = $item";
$sqlhandle = mysql_query($query, $connection);}
if(!$sqlhandle){echo 'comment write failed' . mysql_error();
}

1 个答案:

答案 0 :(得分:1)

我认为你的大多数验证检查空间,其中一些分配空格而不是验证(你有“=”而不是“==”),我已经最小化并修复了你发布的代码中的一些内容以下,

    $item   = $_POST['item'];
    $nitem  = $_POST['nitem'];
    $comment= $_POST['comment'];

   if(!isset($_POST['visible'])){
        $visible = 1;
   }else{
        $visible = $_POST['visible'];
   }


     //for when all is true
   if(trim($nitem)!= '' and trim($comment) != ''){
           $query = " item = '".$nitem."', comment = '".$comment."', visible = $visible ";
   }else{
           $message = 'please go back and edit a field.';   
   }

   //for when nitem and comment is true
   if(trim($nitem)!= '' and trim($comment) != ''){
       $query = " item = '".$nitem."', comment = '".$comment."' ";
   }

   //for when nitem only is true
   if(trim($nitem) != '' and trim($comment) == ''){
       $query = " item = '".$nitem ."' ";
   }

   //for where comment only is true
   if(trim($comment) != '' and trim($nitem) == ''){
       $query = " comment ='". $comment ."' " ;
   }

    $mainquery = "UPDATE shop.titem  SET ". $query ." WHERE titem.item = '".$item."'";
    $sqlhandle = mysql_query($mainquery, $connection);

   if(!$sqlhandle){
      echo $message . mysql_error();
   }

如果我是你,并且我有这个要求,我会采取不同的方法,但我不想改变你的概念,这会让你感到困惑。另外我不知道最重要的是什么。无论如何尝试调整我的代码并看看它是如何进行的,我已经删除了所有的中断,并且只有一个地方可以执行sql查询。

认为这可以帮助您解决问题......

P.S:总是尝试编写可读代码,它将在未来帮助您:)