Php 为什么脚本不跳过MySQL数据插入?
新手在这里学习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” 此外,每次我使用浏览器的“刷新”按钮重新加载
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()检查您正在使用且应使用的空值。