我有一个值来自同一页面中另一个名为$ _POST ['serial']的表单。我想使用此值以另一种形式运行查询,但在我提交第二个表单后,没有任何事情发生,查询未运行。
<?php
if (isset($_POST['serial'])) {
$serial = $_POST['serial'];
?>
<form action="" method="post">
<button type="submit" name="submit">Click to use</button>
</form>
<?php
if (isset($_POST['submit'])) {
$query = mysql_query("UPDATE table_name SET status = 'inactive' WHERE serial = '$serial'");
}
}
?>
答案 0 :(得分:6)
要传递变量,您将在第二个表单上创建一个隐藏输入以包含值:
<?php
// check and clean up the passed variable
$serial = isset($_POST['serial']) ? htmlspecialchars($_POST['serial']) : '';
?>
<form action="" method="post">
<input type="hidden" name="serial" value="<?php echo $serial; ?>" />
<button type="submit" name="submit">Click to use</button>
</form>
安全的清醒
Your script is at risk for SQL Injection Attacks.
如果可以,你应该stop using mysql_*
functions。已在PHP 7中删除These extensions。了解prepared和PDO的MySQLi语句,并考虑使用PDO,it's really not hard。
其他想法
如果您打算执行两步表单,则可能需要将表单页面的所有数据处理放在之外的单独的PHP文件中。由于您显示的代码有限,我担心我们会在答案中遗漏一些内容,因为您的代码仍然无法按预期运行,因此会引发更多问题。
答案 1 :(得分:0)
按钮需要名称和才能成功。您的按钮没有值,因此$_POST['submit']
将不确定。
在value
元素中添加<button>
属性。
执行此操作后,$serial
将被取消定义,因为您的表单未提交。
您还需要将其包含在表单中:
<input type="hidden" name="serial" value="<?php echo htmlspecialchars($serial); ?>">