新手在这里学习PHP / MySQL。
当我用数据填写表单字段时,它可以正常工作并将数据插入数据库。
当我将表单保留为空白,然后单击“ ADD RECORD
”按钮时,我希望$ temp的值为空,但不会为(echos as =1)
,并且"$_POST['firstname'])"
回显为空白-我认为这应该导致$temp
评估为null并跳过"if..."
数据库插入。但是,将创建一个空记录(text fields blank, userlevel=1)
。为什么$temp
不等于“ null
”?
另外,每次我使用浏览器的刷新按钮重新加载脚本时,该程序似乎都会记住表单中的最后一个条目,并创建相同的另一条记录。我本以为"$_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的值为空,
不,这些字段采用表格形式,因此已被设置,它们只是设置为空字符串。
使用empty
(并且可以将其与更具体的内容(例如正则表达式)结合使用)代替is_set
。
我本以为“ $ _POST = array();”将会清除所有这些数据,返回null,并且不会创建任何新条目。
不。这将清除PHP变量中的数据。
刷新浏览器时,浏览器会记住表单的内容并重新提交,PHP程序从头开始运行,PHP用新的数据副本填充$_POST
。
使用post-redirect-get pattern避免重新提交数据。