【问题标题】:Inputting multiple values in database from HTML form using PHP使用PHP从HTML表单在数据库中输入多个值
【发布时间】:2013-08-20 20:29:11
【问题描述】:

我正在尝试使用来自 HTML 的 PHP 将多个值添加到数据库中。但是,我不能只引用 HTML 表单的 name 属性,因为表单中的每个字段都是由 PHP 脚本生成的。我试过用谷歌搜索,但由于我不完全知道我在找什么,所以我的搜索是徒劳的。

这是我用来生成 HTML 表单的代码:

<form action="input_points.php" method="post">
<?php
    while($row = mysql_fetch_array($result)) {
        echo $row['Name'] . ' <input type="text" name="userpoints">';
    }
?>
<button type="submit" name="add_points">Add Points </button>
</form>

我不知道目录中当前有哪些名称,因此我需要这段 php 来确定数据库中的名称。之后,我想要一堆盒子供人们输入点数(因此形成了表格)。我无法弄清楚如何将特定文本框与用户链接。

例如,如果我有一个 Bob 的文本框,我将如何将包含 Bob 获得的点数的输入文本字段与 Bob 在数据库中的条目联系起来?

我知道您可以使用常规表单字段来做到这一点:

$userpoints = $_POST['userpoints'];

UPDATE members SET points = $userpoints where $user = "Bob";

但由于我有多个用户,我如何将正确的数据库条目与正确的用户关联起来?另外,我如何确定哪些框是空的,哪些框是用值更新的?

【问题讨论】:

    标签: php html mysql


    【解决方案1】:

    如果要更新多个字段,则使用数组

    请修改一些代码

    <form action="input_points.php" method="post">
    <?php
        $userCount=mysql_num_rows($result);
        echo '<input type="hidden" name="userCount" value="' .$userCount. '">';
        while($row = mysql_fetch_array($result)) {
            echo '<input type="hidden" name="userid[]" value="' .$row['id']. '">'; //Give the uniq id
            echo $row['Name'] . ' <input type="text" name="userpoints[]">';
        }
    ?>
    <button type="submit" name="add_points">Add Points </button>
    </form>
    

    PHP 代码 -

    $userCount = $_POST['userCount'];
       for($i=1; $i=$userCount; $i++){
            $userpoints = $_POST['userpoints'];
            $userid = $_POST['userid'];
            //UPDATE members SET points = $userpoints where $user = $userid;
            //YOUR CODE HERE
       }
    

    【讨论】:

      【解决方案2】:

      除非您处理值以防止 SQL 注入,否则您尝试执行的更新是不安全的...但如果您真的想要它,而不是 mysql_fetch_array(),请尝试使用 mysql_fetch_assoc()

      使用mysql_fetch_assoc(),您可以使用array_keys() 提取键(数据库字段名称)。键将是您的表单字段的 name 属性,而 的值将是字段的值。

      希望对你有帮助。

      【讨论】:

        【解决方案3】:

        您可以使用数组来存储您需要的所有数据,并添加一个包含缺失数据的隐藏字段:

        <form action="input_points.php" method="post">
        <?php
            for($i=0; $row = mysql_fetch_array($result); $i++ ) {
                echo ' <input type="hidden" name="user[0]['name'] value ='". $row['name'] ."'">';
                echo $row['Name'] . ' <input type="text" name="user[$i]['points'] ">';
            }
        ?>
        <button type="submit" name="add_points">Add Points </button>
        </form>
        

        【讨论】:

          【解决方案4】:

          问题当您点击提交时,用户点仅包含最后一个值,之前所有值都被覆盖 解决方案 名称="用户点" 每次都必须不同,为什么不在数据库中定义它,然后像获取 $row['Name'] 一样获取它?

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2016-05-08
            • 2013-12-07
            • 1970-01-01
            • 2012-12-15
            • 1970-01-01
            • 1970-01-01
            • 2016-06-20
            • 2017-08-25
            相关资源
            最近更新 更多