1

我不想在我的数据库上导入空白/空、空格、空值。因此,出于这个原因,我想在导入数据库之前检查我的输入值。请任何人都可以告诉我 isset 和 empty 函数哪一个有利于检查输入值。这是我的代码。谢谢

$required = array('login', 'password', 'confirm', 'name', 'phone', 'email');

$error = false;
foreach($required as $field) {
  if (empty($_POST[$field])) {
    $error = true;
  }
}

if ($error) {
  echo "All fields are required.";
} else {
  echo "Proceed...";
}
4

7 回答 7

1

在这种情况下empty更有意义,因为它还会检查字符串是否为空。isset只是检查它是否已定义。您可能还想修剪输入。

于 2012-10-23T10:30:33.670 回答
1
$required = array('login', 'password', 'confirm', 'name', 'phone', 'email');

$error = false;
foreach($required as $field) {
  if (empty($_POST[$field]) || strlen(trim($_POST[$field])) == 0) {
    $error = true;
  }
}

if ($error) {
  echo "All fields are required.";
} else {
  echo "Proceed...";
}
于 2012-10-23T10:32:57.070 回答
1

isset完全没用,empty在这里可能不是一个合适的选择。

里面的值$_POST(以及$_GET$REQUEST)总是作为字符串输入,所以isset总是返回。此外,on的行为和其他此类值不会起作用,这意味着检查只会拒绝:trueemptyfalsenullempty

  • 零长度字符串
  • 字符串"0"

这与您的代码似乎打算拒绝的内容不同,后者是:

  • 零长度字符串
  • 完全由空格组成的字符串

考虑trim($_POST['foo']) === ''改为使用 as 条件。

于 2012-10-23T10:33:59.000 回答
1

最好的方法可能是使用emptyand trim。为什么要修剪?它将从开头和结尾删除空格和线条等。这意味着,当有人插入几个空格但没有文本时,可以删除空格,以便您检查empty

if(empty(trim($foo))) 
{
    // It is empty!
}
于 2012-10-23T10:34:39.923 回答
1

Isset()检查变量的值是否包括(Flase、0 或空字符串),但不是 NULL。
如果 var 存在,则返回 TRUE;否则为假。

empty()函数检查变量是否具有空值、空字符串、0、NULL 或 False。如果 var 具有非空且非零值,则返回 FALSE。

例子:

$var = 0;

// Evaluates to true because $var is empty
if (empty($var)) {
echo '$var is either 0, empty, or not set at all';
}


// Evaluates as true because $var is set
if (isset($var)) {
echo '$var is set even though it is empty';
}

来源

在您的情况下,您可以使用empty()功能

于 2012-10-23T10:35:12.100 回答
0

修理它:

foreach($required as $field) 
{
   $val = trim($_POST[$field];
   if (empty($val)) 
   {
      $error = true;
   }
}
于 2012-10-23T10:32:42.150 回答
-1

您可以合并isNotEmpty功能

<?php
function isNotEmpty($input){
    $strTemp = trim($input);

    if($strTemp !== ''){
       return true;
    }
    return false;
}

?>

  • 将 isNotEmpty 保存为 'isnotempty.php' 以防您将来需要引用它。

    include 'isnotempty.php';
    $error = false;
    foreach($required as $field) {
      if (!(isNotEmpty($_POST[$field]))) {
        $error = true;
      }
    
    if ($error) {
      echo "All fields are required.";
    } else {
      echo "Proceed...";
    }
    

希望这可以帮助

于 2012-10-23T10:36:10.490 回答