这是代码。我不确定我做错了什么。表单在数据库中提交,但它是空白的。
$link = mysql_connect(DB_HOST, DB_USER, DB_PASSWORD);
if(!$link){
die('Could not connect: ' . mysql_error());
}
$db_selected = mysql_select_db(DB_NAME, $link);
if(!$db_selected){
die('can not use' . DB_NAME . ': ' . mysql_error());
}
$value = $_POST['hit'];
$value = $_POST['amount'];
$value = $_POST['category'];
$sql = "INSERT INTO hit (hit) VALUES ('$value')";
if(!mysql_query($sql)){
die('Error: ' . mysql_Error());
}
mysql_close();
?>
这是表格
<!DOCTYPE html>
<html>
<head>
<title>Post Hits</title>
<style type="text/css">
table tr > td { text-align: right; }
table tr > td + td { text-align: left; }
</style>
</head>
<body>
<form action="he.php" method="post">
<table>
<tr>
<td>
Hit:
</td>
<td>
<textarea name="hit" rows="3"></textarea>
</td>
</tr>
<tr>
<td>
amount:
</td>
<td>
<input type="text" id = "amount" name="amount" />
</td>
</tr>
<tr>
<td>
category:
</td>
<td>
<select name="category" id="category">
<option value="">- Choose -</option>
<option value="Blue">survey</option>
<option value="Green">batch</option>
<option value="Orange">misc</option>
<option value="Red">masters</option>
<option value="Yellow">qual</option>
</select>
</td>
</tr>
<tr>
<td colspan="2" style="text-align: center;">
<input type="submit" id="submit" value="Submit!" />
</td>
</tr>
</table>
</form>
</body>
</html>
对于所有这些我仍然很新,所以无论我做错什么,这对我来说都是显而易见的。感谢
答案 0 :(得分:2)
您的代码中存在许多问题和错误。在第一阶段,您使用相同的变量来获取您希望从POST
数据
$value = $_POST['hit'];
$value = $_POST['amount'];
$value = $_POST['category'];
应该是
$hit = $_POST['hit'];
$amount = $_POST['amount'];
$category = $_POST['category'];
所以你的查询看起来像
$sql = "INSERT INTO hit (hit) VALUES ('$hit')";
或者如果您想要插入所有数据,您应该
$sql = "INSERT INTO hit (hit, amount, category) VALUES ('$hit', '$amount', '$category')";
然后我想要记住,mysql_
函数已被弃用,因此我建议您切换到mysqli
或PDO
,确实存在sql injection
的风险,看看How can I prevent SQL injection in PHP?。您应该使用准备好的法规来避免任何风险
答案 1 :(得分:0)
您在此处的每个阶段都会覆盖$value
的值:
$value = $_POST['hit'];
$value = $_POST['amount'];
$value = $_POST['category'];
这会使$value
仅等于您为其分配值的最后一次,在这种情况下,它只会等于$_POST["category"]
。
您应该将每个$_POST
数据存储在一个单独的变量中,如下所示:
$hit = $_POST['hit'];
$amount = $_POST['amount'];
$category = $_POST['category'];
然后将其插入您的查询,例如$sql = "INSERT INTO hit (hit,amount,category) VALUES ('$hit','$amount','$category')";
此外,您应该考虑通过使用PDO
或mysqli
进行数据库事务来保护SQL注入数据。