【问题标题】:How do I add things to a database based on their rank and a button?如何根据排名和按钮将内容添加到数据库?
【发布时间】:2019-07-17 18:27:20
【问题描述】:

我有一个网站,专为参加 NASCAR 的家人制作。我在这个页面上工作最多的是 Roster 页面。驱动程序根据来自 NASCAR 的 JSON 文件分为 5 个等级(A、B、C、D 和 E)。所有驱动程序的右侧都有一个名为“添加”的按钮。目前,它什么也不做。我想让它为用户更改驱动程序。例如,如果用户选择可能在 Rank A 中的 Kyle Busch,它将把他们的 driver1 更改为 Kyle Busch。排名 B,驱动程序 2。以此类推。

我目前通过必须填写文本框来添加驱动程序,但这可能会很烦人。到目前为止,这是我对按钮和其他内容的了解:

$("#dummy_" + pos).before("<p>" + person.driver_name + " <input type='submit' class='btn btn-success' value='Add'>");

^ Javascript

下面是我现在的做法:

    if(isset($_POST['add_driver1'])){
  $driver1 = htmlentities($_POST['driver1']);

  $conn->query("UPDATE users SET driver1='$driver1' WHERE id='$user->id'");
  header('Location: ../roster/');
}

^PHP

              <form action="" method="Post">
             <div class="input-group">
      <input type="text" class="form-control" name="driver1" placeholder="Driver 1" autocomplete="off">
  <div class="input-group-append">
    <input type="submit" class="btn btn-outline-success" value="Set" name="add_driver1">
  </div>
</div>
</form>

^HTML

感谢所有帮助,谢谢!

【问题讨论】:

  • htmlentities() 不能防止 SQL 注入。

标签: javascript php html mysql json


【解决方案1】:

您可以使用列表将排名映射到字段:

$rankToField = [
    'A' => 'driver1',
    'B' => 'driver2',
    'C' => 'driver3',
    'D' => 'driver4',
    'E' => 'driver5',
];

您可以通过为每个“添加”创建一个表单来做到这一点:

<form method="POST" action="">
    <input type="hidden" name="rank" value="<RANK_FROM_JSON>" />
    <input type="hidden" name="driver" value="<DRIVER_FROM_JSON>" />
    <input type="submit" .../>
</form>

在您的 PHP 脚本中,您可以像这样保存它:

$field = $rankToField[$_POST['rank']];
$driver = $_POST['diver'];
/* insert... */

如果 JSON 提供了驱动程序 ID,您只需通过表单将 ID 相加并在插入之前搜索 JSON 文件中的值。

你可能想看看这个:http://php.net/manual/en/function.mysqli-escape-string.php 替换你的htmlentities

为了安全起见,Prepared Statements:http://php.net/manual/en/mysqli.prepare.php

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-26
    • 2021-10-09
    • 1970-01-01
    相关资源
    最近更新 更多