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')";

また、データベース トランザクションを使用PDOまたは実行して、SQL インジェクションからデータを保護することも検討する必要があります。mysqli

于 2013-04-28T21:38:44.423 に答える