【问题标题】:PHP Is it possible to send a unique value for each POST form in my while loop?PHP 是否可以在我的 while 循环中为每个 POST 表单发送一个唯一值?
【发布时间】:2023-03-31 05:01:01
【问题描述】:

我目前有一个数据库,其中有不同的地方作为我的行,每个地方都有一个 id、一个名字和一张图片。

我正在尝试创建一个 while 循环,该循环为每个地方生成一个表单,其中包含一个提交输入和一个 div 作为其标签。我希望每个表单输出每个对应的placeId。我尝试使用<input type='text' id='PlaceIdInput' name='PlaceIdInput' value='$PlaceId'> 执行此操作,但很快发现它仅输出第一个 PlaceId 为 1,即使我单击了位置编号 2 或 3。

我猜是因为它们都有相同的输入名称,这很糟糕。

抱歉,如果我使用了错误的术语,我还在上高中,英语是我的第二语言。我真的很感谢你的支持! :D

while($rad = $resultat->fetch_assoc()){

$PlaceId=$rad["PlaceId"];
$PlaceName=$rad["PlaceName"];
$PlacePicture=$rad["PlacePicture"];

echo("

    <form method='POST'>
        <input id='PlaceInput' type='submit' name='Place' value='Place'>

        <label for='PlaceInput'>
            <div class='PlaceDiv'>
                <p class='PlaceName'>$PlaceName</p>

                <div class='ImageDiv'>
                    <img class='Image' src='$PlacePicture'>
                </div>
            </div>
        </label>    

        <input type='text' id='PlaceIdInput' name='PlaceIdInput' value='$PlaceId'>
    </form>
");

}

if(isset($_POST["地点"])){

$PlaceIdInput = $_POST["PlaceIdInput"];

$sql = "UPDATE User SET UserCurrentPlace='$PlaceIdInput' WHERE UserId='$UserId'";
if($kobling->query($sql)){
} 
else {
    echo($kobling->error);
}

}

【问题讨论】:

  • 警告:使用mysqli 时,您应该使用parameterized queriesbind_param 将用户数据添加到您的查询中。 请勿使用字符串插值或连接来完成此操作,因为您创建了严重的SQL injection bug切勿$_POST$_GET任何用户数据直接放入查询中,如果有人试图利用您的错误,这可能会非常有害。
  • 您是否使用 javascript 或其他方式发布表单?如果它们以不同的形式出现,则上述内容没有理由发布相同的PlaceIdInput。但是,如果您使用 javascript 并使用 ID 获取值,您很可能只会获得第一个输入,因为它们都具有相同的 ID。 ID 在文档中必须是唯一的。
  • 不,我正在使用 php 发布表单
  • 刚刚尝试了您的代码,我得到了不同的 ID。我确实得到了相同的Place虽然因为那是硬编码的。
  • 啊,我明白了!谢谢!我通过设置 id='PlaceInput$PlaceId' 和标签 for='PlaceInput$PlaceId' 来修复它。 :D

标签: php mysql sql while-loop


【解决方案1】:

问题是我对多个输入使用了相同的 id。因此标签选择了第一个输入而不是它们对应的输入。改用 id='PlaceInput$PlaceId' 和标签 for='PlaceInput$PlaceId' 很容易解决这个问题。

【讨论】:

  • 如果可能的话,您可以通过将提交按钮放在标签内(本质上使该标签“用于”该按钮)来完全避免所有这些和使用 id - 但是您在该标签中有其他表单元素所以它更复杂。值得一看。
猜你喜欢
  • 1970-01-01
  • 2023-04-03
  • 1970-01-01
  • 2018-07-11
  • 1970-01-01
  • 2019-10-16
  • 2021-11-24
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多