【发布时间】:2021-05-07 01:18:02
【问题描述】:
我创建了一个简单的 HTML 表单,用于提交应存入帐户的金额。该表单由一个数字输入和一个提交按钮组成。
当我在输入框中输入10 后按下提交按钮时,我收到以下错误消息:
更新记录时出错:“字段列表”中的未知列“存款”
Welcome to the Bank! <br><br>
<table bgcolor="orange" border="1" cellspacing="0" cellpadding="50">
<tr><td>
<form action="" method='post'><b>Amount of money you want to deposit:</b><br><br>
<input type='number'><input name ='deposit' type='submit' value='deposit'></td></form>
<?php include 'db.php';
if (isset($_POST['deposit']))
{
$deposit = $_POST['deposit'];
$sql = "UPDATE bank SET bank = bank + $deposit, cash_on_hand = cash_on_hand - $deposit WHERE id=1";
if ($conn->query($sql) === TRUE)
{
echo "Record updated successfully"; /*Money Deposited successfully!*/
}
else
{
echo "Error updating record: " . $conn->error;
}
$conn-> close();
}
?>
【问题讨论】:
-
请使用正确的代码 sn-p 更新您的问题。 (顺便说一句,您要插入数据的数据库表似乎没有所需的
deposit列。) -
警告:您对SQL Injections 持开放态度,应该使用参数化的prepared statements,而不是手动构建查询。它们由PDO 或MySQLi 提供。永远不要相信任何形式的输入!即使您的查询仅由受信任的用户执行,you are still in risk of corrupting your data。 Escaping is not enough!
-
not bothering with security...无关紧要,因为参数化解决的不仅仅是安全问题。不管怎样,如果你只是在玩,那就是学习如何使用它们的时候了,这样当你开始编写一个真正的应用程序时,你就已经知道该怎么做了。 -
我现在明白了。即使您修复了 SQL 注入,您的主要问题仍然存在。您不知道 HTML 表单是如何工作的。这个
<input type='number'><input name ='deposit' type='submit' value='deposit'>并没有按照你的想法去做。应该是<input type='number' name ='deposit'><input type='submit'> -
不要使用 w3schools 来学习 PHP。他们有糟糕的教程。如果您想学习数据库交互,请使用我给您的链接。对于 HTML 表单,您可以使用 MDN developer.mozilla.org/en-US/docs/Learn/Forms