我是PHP的新手,我将以下问题从表单传递到必须处理它的.php文件。
所以这是渲染页面的形式:
<form method="post" action="common/remove-booking_pc.php" class="ajax-form">
<input id="id_booking" name="id_booking" value="5" type="hidden">
<a href="/PandaOk/templates/default/common/remove-booking_pc.php" type="submit">
<i class="fa fa-power-off"></i>
Conferma
</a>
</form>
显示在浏览器代码中的内容。正如您所看到的那样,它传递了一个数据字段:
<input id="id_booking" name="id_booking" value="5" type="hidden">
传递的值 5 。
因此,当我提交此表单时,会通过此文件呈现 remove-booking_pc.php :
<?php
$id_booking = $_POST['id_booking'];
$result_remove_booking = $db->query("UPDATE pm_booking SET status= " . $id_booking);
?>
问题是 $ id_booking null 而 $ _ POST 是一个空数组。
为什么呢?怎么了?我错过了什么?我怎样才能正确传递这个值?
答案 0 :(得分:2)
您的提交是一个锚点,而不是表单提交,因此接收页面永远不会收到任何POST数据。
只需使用button
类型的input
[或submit
]替换您的锚点,表单将按预期提交。
<form method="post" action="common/remove-booking_pc.php" class="ajax-form">
<input id="id_booking" name="id_booking" value="5" type="hidden">
<button type="submit" class="fa fa-power-off" value="Submit">Conferma</button>
</form>
您应该考虑的其他事项:
您的表单容易受到跨网站请求伪造[CSRF]
您的数据库容易受SQL injection攻击。使用Prepared Statements。
正如Fred所指出的,您的SQL(UPDATE pm_booking SET status=
)当前将更新表中的每一行,没有任何限定条件。在SQL中使用WHERE
。
如果处理文件上传,您的HTML表单最佳做法应为enctype
值。
<form enctype='multipart/form-data' ... >
答案 1 :(得分:1)
您需要Button
来提交表单,在这种情况下,您使用的是href
超链接。示例如下:
<input type="Submit" name="Submit" value="Submit">