处理mysql查询最有效的方法,只有“提交”?

时间:2011-10-28 04:57:09

标签: php mysql forms

我设置了一个php表单来将数据插入到我的数据库中,并注意到每次刷新页面时默认运行查询。想通知我可以将查询移动到它自己的文件中,然后在“提交时”调用它......但这不起作用。什么是最好的方法呢?

2 个答案:

答案 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>