Php 为什么脚本不跳过MySQL数据插入?

Php 为什么脚本不跳过MySQL数据插入?,php,mysql,forms,Php,Mysql,Forms,新手在这里学习PHP/MySQL 当我用数据填充表单字段时,它工作正常,并将数据插入数据库 当我将表单留空,并单击“addrecord”按钮时,我希望$temp的计算结果为null,但它不是(echos as=1),而“$\u POST['firstname'])”将其作为空白-我认为这应该会导致$temp计算结果为null,并跳过“if…”数据库插入。但是,将创建一个空记录(文本字段为空,userlevel=1)。为什么$temp不等于“null” 此外,每次我使用浏览器的“刷新”按钮重新加载

新手在这里学习PHP/MySQL

当我用数据填充表单字段时,它工作正常,并将数据插入数据库

当我将表单留空,并单击“
addrecord
”按钮时,我希望$temp的计算结果为null,但它不是
(echos as=1)
,而
“$\u POST['firstname'])”
将其作为空白-我认为这应该会导致
$temp
计算结果为null,并跳过
“if…”
数据库插入。但是,将创建一个空记录
(文本字段为空,userlevel=1)
。为什么
$temp
不等于“
null

此外,每次我使用浏览器的“刷新”按钮重新加载脚本时,程序似乎都会记住表单中最后的条目,并创建另一条相同的记录。我本以为
“$\u POST=array();”
会清除所有这些数据,返回空值,而不会创建任何新条目。如果我在这里得到一些澄清,我会有所帮助。提前谢谢

代码如下:

<?php
//member table query - dbmemberquery.php
require_once 'dbconnect.php';

//form for data entry       
echo <<<_END
<form action="dbmemberquery.php" method="post"><pre>
    Firstname   <input type="text" name="firstname" />
    Lastname    <input type="text" name="lastname" />
    Email       <input type="text" name="email" />
    Password    <input type="text" name="password" />
    Userlevel   <input type="text" name="userlevel" />  
                <input type="submit" value="ADD RECORD" />  
</pre></form>
_END;

//inserting records into member table
function get_post($var)
    {
        return mysql_real_escape_string($_POST[$var]);
    }   

//check if all fields are filled in on the form
$temp = (isset($_POST['firstname']) &&
    isset($_POST['lastname']) &&
    isset($_POST['email']) &&
    isset($_POST['password']) &&
    isset($_POST['userlevel']));

//debug only - check values
echo "_post value for firstname = ".$_POST['firstname']."<br />";
echo "isset _post value =" .(isset($_POST['firstname']))."<br />";
echo "temp variable =".$temp."<br />"; 

if ($temp)
    {

        $firstname  = get_post('firstname');
        $lastname   = get_post('lastname');
        $email      = get_post('email');
        $password   = get_post('password');
        $userlevel  = get_post('userlevel');


        $query2 = "INSERT INTO sc2.members(firstname, lastname, email,password,userlevel)".
        "VALUES ('$firstname','$lastname','$email','$password','$userlevel')";

        if (!mysql_query($query2, $db_server))
            echo "INSERT failed: $query2<br />" . 
            mysql_error() . "<br /><br />";

        $_POST = array();

    }

$_POST = array();


$query = "SELECT * FROM sc2.members";
$result = mysql_query($query);
if (!$result) die ("Database access failed: ". mysql_error());
$rows = mysql_num_rows($result);
//shows number of rows in member table
echo "rows: ".$rows . '<br />'.'<br />';

//lists all of the members
for ($j = 0; $j < $rows ; ++$j)
{
    $row = mysql_fetch_row($result);
    echo 'ID: '         . $row[0] . '<br />';
    echo 'firstname: '  . $row[1] . '<br />';
    echo 'lastname: '   . $row[2] . '<br />';
    echo 'email: '      . $row[3] . '<br />';
    echo 'password: '   . $row[4] . '<br />';
    echo 'userlevel: '  . $row[5] . '<br />';
    echo '<br />';
}

mysql_close($db_server);

当我将表单留空并单击“添加记录”按钮时,我希望$temp的计算结果为空

不,字段的格式是这样设置的,它们只是设置为空字符串

使用(并可能将其与更具体的正则表达式相结合)而不是
is\u set

我本以为“$_POST=array();”会清除所有这些数据,返回空值,而不会创建任何新条目

否。这将清除PHP变量中的数据

刷新浏览器时,浏览器会记住表单的内容并重新提交表单,PHP程序会从头开始重新运行,PHP会使用数据的新副本填充
$\u POST

使用可避免重新提交数据。

请尝试empty()检查您正在使用且应使用的空值。