我设置了一个php表单来将数据插入到我的数据库中,并注意到每次刷新页面时默认运行查询。想通知我可以将查询移动到它自己的文件中,然后在“提交时”调用它......但这不起作用。什么是最好的方法呢?
答案 0 :(得分:2)
假设您的表单正在POST到服务器,那么</ p>
<?php
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
... process the form
}
?>
检查是否存在输入字段是不可靠的 - 您可能会更改字段的名称并忘记更新字段名检查。此方法为100% - REQUEST_METHOD值将始终与调用脚本的方式相匹配。
答案 1 :(得分:-1)
以下是如何将此文件另存为connection.php请注意,此处没有验证脚本。这只是一个如何在同一页面上使用php mysql将记录插入数据库的简单示例。
Save this file as conn.php
<?php
$hostname_tfc_conn = "servername";
$database_tfc_conn = "connname";
$username_tfc_conn = "dbusernanme";
$password_tfc_conn = "dbpassword";
$tfc_conn = mysql_pconnect($hostname_tfc_conn, $username_tfc_conn, $password_tfc_conn) or trigger_error(mysql_error(),E_USER_ERROR);
?>
Now name the following page as you want
<?php
include_once("conn.php");
$editFormAction = $_SERVER['PHP_SELF'];
if (isset($_SERVER['QUERY_STRING'])) {
$editFormAction .= "?" . htmlentities($_SERVER['QUERY_STRING']);
}
if ((isset($_POST["MM_insert"])) && ($_POST["MM_insert"] == "form1")) {
$insertSQL = sprintf("INSERT INTO user (username, password, email) VALUES (%s, %s, %s)",
($_POST['name'], "text"),
($_POST['password'], "text"),
($_POST['email'], "text"));
mysql_select_db($database_tfc_conn, $tfc_conn);
$Result1 = mysql_query($insertSQL, $tfc_conn) or die(mysql_error());
$insertGoTo = "filename.php";//Put you filename here if the record is successful
header("Location: %s", $insertGoTo));
}
?>
<body>
<form id="form1" name="form1" method="POST" action="<?php echo $editFormAction; ?>">
<p>Name :
<input type="text" name="name" id="name" />
</p>
<p>Email:
<input type="text" name="email" id="email" />
</p>
<p>Password:
<input type="text" name="password" id="password" />
</p>
<p>
<input type="submit" name="button" id="button" value="Submit" />
</p>
<input type="hidden" name="MM_insert" value="form1" />
</form>