我不想在我的数据库上导入blank / empty,space,null值。因此,我想在导入数据库之前检查输入值。请任何人都可以告诉我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...";
}
答案 0 :(得分:1)
在这种情况下empty
更有意义,因为它还会检查字符串是否为空。 isset
只检查它是否已定义。您可能还想修剪输入。
答案 1 :(得分: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...";
}
答案 2 :(得分:1)
isset
完全没用,empty
可能不适合这里。
$_POST
(以及$_GET
和$REQUEST
)中的值始终以字符串形式输入,因此isset
将始终返回{{ 1}}。此外,true
,empty
和其他此类值的false
行为不会发挥作用,这意味着null
检查只会拒绝:
empty
这与您的代码似乎要拒绝的内容不同,后者将是:
请考虑使用"0"
作为条件。
答案 3 :(得分:1)
最好的方法可能是使用empty
和trim
。为什么修剪?它将从开头和结尾删除空格和线等。这意味着,当有人插入一些空格但没有文字时,可以删除空格,以便检查empty
:
if(empty(trim($foo)))
{
// It is empty!
}
答案 4 :(得分:1)
Isset()
检查变量是否包含值(Flase,0或Empty string),但不是NULL。
如果var存在则返回TRUE;否则为FALSE。
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()
功能
答案 5 :(得分:0)
修复它:
foreach($required as $field)
{
$val = trim($_POST[$field];
if (empty($val))
{
$error = true;
}
}
答案 6 :(得分:-1)
您可以合并 isNotEmpty 功能
<?php
function isNotEmpty($input){
$strTemp = trim($input);
if($strTemp !== ''){
return true;
}
return false;
}
&GT;
将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...";
}
希望这有帮助