我有一个MSSQL数据库的PHP查询。看起来像这样:
<?php
if (isset($_POST['form6'])) {
$Title=$_POST['Title'];
$Synopsis=$_POST['Synopsis'];
$Article=$_POST['Article'];
$DateUploaded= date("Y-m-d H:i:s");
$Deleted=$_POST['Deleted'];
$myServer = "**********";
$myUser = "**********";
$myPass = "******";
$myDB = "*********";
$dbhandle = mssql_connect($myServer, $myUser, $myPass) or die("Couldn't connect to SQL Server on $myServer");
mssql_select_db($myDB) or die;
$dbTABLE = "Tablename";
$query_sql = sprintf("INSERT INTO %s (Title, Synopsis, Article, DateUploaded, Deleted) VALUES ('%s','%s','%s','%s','%s')",
addslashes($dbTABLE),
addslashes($Title),
addslashes($Synopsis),
addslashes($Article),
addslashes($DateUploaded),
addslashes($Deleted));
if ($result = mssql_query($query_sql, $dbhandle)) {
print "Your information has been successfully added to the database.";
header('Location: News.php');
}
}
?>
最初它是在一个单独的.php文件上,并在表单的"操作"上执行。然而,为了减少重定向的数量,我将它移动到与表单相同的页面,并在顶部包含if语句,以尝试在表单的发布时执行它,这被命名为form6。
这是表格行。:
<FORM method="post" name="form6" id="form6" ENCTYPE="multipart/form-data" action="<?php echo $_SERVER['PHP_SELF']; ?>">
然而,所有这些似乎都是重新刷新页面,没有数据添加到数据库中,也没有击中标题重定向到News.php。
我也尝试过,但并没有采取任何行动,结果是一样的。我的问题是,为什么这不会影响php函数/查询?
您正在检查<form
元素,该元素在以下行中从未实际包含值:
if (isset($_POST['form6']))
您需要检查实际的表单元素(输入)以查看是否发送了数据。
您应该检查$_POST['Title']
之类的实际值,看看数据是否已从表单中发送。
如果您想包含表单名称,请在表单中使用这样的隐藏字段:
<input type='hidden' name='form6' value='1'>
表单中需要一个提交按钮,例如:
<form method="post" name="form6" id="form6" ENCTYPE="multipart/form-data" action="">
<input type="submit" name="formsubmit"/>
</form>
然后在php中检查
if (isset($_POST['formsubmit']))
另一种不包括制作特殊隐藏字段的方法:
将"form6"添加到您的操作url:
<FORM method="post" name="form6" id="form6" ENCTYPE="multipart/form-data"
action="<?php echo $_SERVER['PHP_SELF'].'?form6'; ?>">
如果您检查表单名称,请使用GET,但请记住其他值仍在POST变量中
if (isset($_GET['form6'])) {
为什么将if条件中的<Form
name
属性检查为
if (isset($_POST['form6']))
移除它并像一样检查
if (isset($_POST['Title']))