2017-01-01 90 views
0

我有3个输入框功能为铸造“”为NULL

<input type="text" name="first"> 
<input type="text" name="second"> 
<input type="text" name="third"> 

,我需要的后端,将改变PHP函数/施放输入字段设置为NULL,如果用户不输入什么也没有。

这就是我做了,但它太复杂了:

if ($first == ""){ 
    $first = NULL; 
} 

if ($second == ""){ 
    $second = NULL; 
} 

if ($third == ""){ 
    $third = NULL; 
} 

所以,问题是可以这样做的所有功能于一体,更简单?

喜欢的东西:

如果有任何字段为空字符串“”,然后设置字段设置为NULL。

+0

也许'函数set_null($测试){ 返回空($测试)? $ test:NULL; }'? – chris85

+0

你在问什么,这有点违背PHP的本质。但你可以用一个简单的函数来完成。 – Xorifelse

+0

我在这里学习......我愿意接受任何建议,所以如果你能解释给我或展示....? – lewis4u

回答

0

尝试使用此代码:

function isEmpty($dato){ 
    if(empty($dato)){ 
     $dato=NULL; 
    } 
    return $dato; 
} 
+4

重新定义现有函数? – Xorifelse

+0

这看起来不错 – lewis4u

+4

它不起作用。 'is_null()'是一个函数编译.. – Xorifelse

1

如果使用PHP7你可以尝试这样的:

function checkIsEmpty(string &...$strings) { 
    foreach ($strings as &$string) { 
     if (empty($string)) { 
      $string = NULL; 
     } 
    } 
} 


checkIsEmpty($a, $b, $c); 

这将全部替换为空字符串为NULL。

另外,使用PHP5:

function checkIsEmpty($string) { 
    return (empty($string) ? NULL : $string); 
} 

我张贴这不仅是因为重新定义is_null()是不是最好的主意,即使是3条额外的线路没有考虑到。任何长于1个内衬的空间都会浪费空间以实现如此简单的功能。

+0

尽管接受的解决方案有效(如果函数名称已更改),但这个实际上应该是可接受的解决方案。 – bugfroggy

+1

谢谢,但接受的解决方案无法工作。首先,我们不能重新定义'is_null()'。其次,他错过了'dato = NULL'的美元符号;' –

+0

我甚至没有注意到缺失的美元符号哈哈,但我的意思是,如果函数被重命名,它的工作原理。它的做法太麻烦了。 – bugfroggy

1

看起来你处理表单输入所以也许这样的事情是你想要什么:

$_POST = array_map($_POST, function($v) { return $v == '' ? NULL : $v;}) 
+0

是的,这将是最好的一个,如果100%的领域可以在数据库中为null。 –