0

这是代码。我不确定我做错了什么。表单正在数据库中提交,但它是空白的。

$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>

我对这一切还是很陌生,所以无论我犯了什么错误,对我来说都不明显。谢谢

4

2 回答 2

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,看看这里如何防止 PHP 中的 SQL 注入?. 您应该使用准备好的陈述来避免任何风险

于 2013-04-28T21:33:57.483 回答
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')";

此外,您应该考虑通过使用PDOmysqli执行数据库事务来保护您的数据免受 SQL 注入的影响。

于 2013-04-28T21:38:44.423 回答