【问题标题】:Storing the POST array in mysql without empty values?在没有空值的情况下将 POST 数组存储在 mysql 中?
【发布时间】:2011-09-15 11:45:33
【问题描述】:

这是一个让我难过的事。

我将 $_POST 数组存储在 mysql 数据库中。我也在使用 JavaScript 在我的表单上动态创建输入字段,但是如果输入字段为空,仍然会被插入到数据库中(显然)。

有没有办法通过 POST 数组过滤掉这些空值?

编辑:

使用 WordPress 但想法相同:

<?php 
foreach($_POST['eirepanel_inline_ads_options_name'] as $post_eirepanel_inline_ads_options_name):
    if(empty($post_eirepanel_inline_ads_options_name)): 
       echo 'empty';
    else: 
        update_option('eirepanel_inline_ads_options', $_POST);
        $eirepanel_inline_ads_options = get_option('eirepanel_inline_ads_options');
    endif; 
endforeach;
?>

【问题讨论】:

  • 如何处理提交按钮的值?你认为什么是空值?空字符串? 0?
  • 提交的值有一个布尔值。空值将是一个空字符串
  • 嗯,提交按钮上显示的文字是什么?
  • 您是否在表单中使用数组 (PHP arrays via form-field names)?

标签: php arrays post filter


【解决方案1】:

你说你只想要 $_POST 数组中非空字符串的元素:

   $nonEmpty = array_filter($_POST, function($value) {return $value!=='';} );

您写的是动态添加字段。我不知道你是否使用PHP notation for arrays in form fields。如果是这样,在处理这种额外类型的数据时,情况确实会有所不同。

【讨论】:

    【解决方案2】:
    function filter_post($value)
    { 
      if ($value !='')
      {
        return $value;
      }
    
    }
    $new_array=array_filter($_POST,'filter_post');
    

    【讨论】:

      【解决方案3】:

      有几个。但是,请注意并不总是发送值的控件。如果未勾选复选框,您不一定会获得该复选框的值。

      既然您使用的是 Javascript,那么您如何将表单存储为 JSON:

      <?php
      $formVars = array();
      foreach ($_POST as $key=>$value){
         if ($value != ''){
            $formVars[$key] = $value;
         }
      }
      
      $form = json_encode($formVars);//Store this in DB
      

      【讨论】:

        【解决方案4】:

        你可以对它做一个空检查。

        免责声明 这是一个简单的例子。不检查 $value 是否为数组(例如复选框或文件输入)。仅适用于输入。

        $data = array();
        foreach ($_POST as $key => $value) {
           if (empty($value)) continue;
           $data[$key] = $value;
        }
        //save $data to DB
        

        【讨论】:

          【解决方案5】:

          你可以这样做:

          foreach ($_POST as $key => $value)
          {
              if (empty($value))
              {
                  unset($_POST[$key]);
              }
          }
          

          【讨论】:

            【解决方案6】:

            在数据库中插入任何内容之前检查 $_POST 的值

            if($_POST['email'] == "") { ...
            

            【讨论】:

              猜你喜欢
              • 2011-09-13
              • 1970-01-01
              • 1970-01-01
              • 2011-08-31
              • 1970-01-01
              • 1970-01-01
              • 2019-10-19
              • 2021-06-29
              • 1970-01-01
              相关资源
              最近更新 更多