php - php mysql 中的各种输入项

标签 php mysql

我用 html 创建了一个 html 表单,并输入了项目、评论和可见内容。我想做的是能够通过创建循环使用这些协议(protocol)的代码来将这些变量输入到 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();
}

最佳答案

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

    $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:始终尝试编写可读的代码,这会对您将来有所帮助:)

关于php - php mysql 中的各种输入项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22339857/

相关文章:

javascript - Windows下CURL发送参数

php - 使用 php 5.3 解析错误 : syntax error, 意外 '['

php - 连接到本地主机 [不同路径]

php - 动态添加的表单字段 - pdo php mysql

php - 使用 Eloquent 从带有外键的单个表中获取数据到另外两个表 - laravel

php - 根据类型对混合数组进行排序

php - 如何选择时间戳列

java - 使用 Hibernate 性能优化在 startIPNum 和 endIPNum 范围内查找 IP 号码

mysql - 如何在 MySQL 中重置 AUTO_INCRMENT

php - CI - 帮助插入多个选择表单,每个表单都有多个选择的选项