繁体   English   中英

使用PHP从HTML表单中输入数据库中的多个值

[英]Inputting multiple values in database from HTML form using PHP

我正在尝试使用HTML中的PHP将多个值添加到数据库中。 但是,我不能仅引用HTML表单的name属性,因为表单中的每个字段都是由PHP脚本生成的。 我已经尝试了Googling,但是由于我不知道自己在寻找什么,因此搜索一直没有用。

这是我用来生成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";

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

你正在尝试做的更新是不是安全的,除非你请客的值以防止SQL注入......但如果你真的想要,而不是mysql_fetch_array()请尝试使用mysql_fetch_assoc()

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

希望能帮助到你。

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

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

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

请更改一些代码

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

当你点击提交userpoints 问题只包含最后一个值前面的所有值都将被覆盖解决方案的名称=“userpoints”每次都必须是不同的,为什么不是你在数据库中定义它,然后把它拿来就像你取$行[“名称”]?

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM