2011-06-15 29 views
1

这是一个让我难倒的人。在没有空值的情况下将POST数组存储在mysql中?

我将$ _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

你如何处理提交按钮值?你认为什么是空值?空串? 0? – hakre 2011-06-15 12:18:40

+0

提交值有一个布尔值。一个空值将是一个空字符串 – 2011-06-15 12:22:35

+0

嗯,提交按钮上显示的文字是什么? – hakre 2011-06-15 12:24:33

回答

0

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

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

你可以这样做即:

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

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

由于您使用Javascript,你怎么样存储形式JSON:

<?php 
$formVars = array(); 
foreach ($_POST as $key=>$value){ 
    if ($value != ''){ 
     $formVars[$key] = $value; 
    } 
} 

$form = json_encode($formVars);//Store this in DB 
0

你可以只做一个空的检查就可以了。

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

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

} 
$new_array=array_filter($_POST,'filter_post'); 
+0

谢谢,看起来很有前途,但我不害怕 – 2011-06-15 12:59:10

1

你说,你只需要那些不是一个空字符串$ _POST数组的元素:

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

你写你动态添加字段。我不知道你是否使用PHP notation for arrays in form fields。如果这样的话,处理这些额外类型的数据会有一些不同。

相关问题