Javascript 将数据获取到数据库,并在有匹配项时重新插入

Javascript 将数据获取到数据库,并在有匹配项时重新插入,javascript,php,jquery,mysql,Javascript,Php,Jquery,Mysql,我正在制作一个php搜索表单,用户将键入他们的id,如果匹配,它将重新将数据插入数据库 我管理获取数据并在提交按钮下显示值 我现在的问题是如何在搜索后插入数据。是否可以重新插入 同一表格中的数据是否匹配 这是我的密码: <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.1.0/css/bootstrap.min.css"> <script src="https://ajax.goog

我正在制作一个php搜索表单,用户将键入他们的id,如果匹配,它将重新将数据插入数据库

我管理获取数据并在提交按钮下显示值

我现在的问题是如何在搜索后插入数据。是否可以重新插入 同一表格中的数据是否匹配

这是我的密码:

<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.1.0/css/bootstrap.min.css">
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.0/umd/popper.min.js"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.1.0/js/bootstrap.min.js">
</script>

<a class="btn btn-outline-info" href="#exampleModal" data-toggle="modal" data-target="#exampleModal" target="_blank" role="button">Time-in<i class="fa fa-sign-in ml-2"></i>
</a>
<?php print $output; ?>
<div class="modal fade" id="exampleModal" tabindex="-1" role="dialog" aria-labelledby="exampleModalLabel" aria-hidden="true" data-backdrop="false">
  <div class="modal-dialog modal-dialog-centered" role="document">
    <div class="modal-content">
      <div class="modal-header blue accent-1">
        <h5 class="modal-title" style="color:white;" id="exampleModalLabel">Login</h5>
        <button type="button" class="close" data-dismiss="modal" aria-label="Close">
          <span aria-hidden="true">&times;</span>
        </button>
      </div>
      <div class="modal-body">
        <center>
          <h5>
            <p> Click Continue </p>
          </h5>
        </center>
      </div>
      <div class="modal-footer">
        <a href="test.html" class="btn" data-dismiss="modal" style="margin-right:220px; color:#fff; background:#00bcd4" href="#exampleModal2" data-toggle="modal" data-target="#exampleModal2" target="_blank" role="button">Yes</a>
      </div>
    </div>
  </div>
</div>

<div class="modal fade " id="exampleModal2" tabindex="-1" role="dialog" aria-labelledby="exampleModalLabel" aria-hidden="true" data-backdrop="false">
  <div class="modal-dialog  modal-dialog-centered " role="document">
    <div class="modal-content">
      <div class="modal-header blue accent-1">
        <h3 class="mt-2" style="color:white;"><i class="fa fa-user-circle"></i> Confirm Identity:</h3>
        <a href="sample.php" button type="btn" class="close" aria-label="Close">
          <span aria-hidden="true">&times;</span>
        </a>
      </div>
      <div class="modal-body">
        <form method="post">
          <div class="md-form input-group">
            <input type="search" class="form-control added-padding-2" placeholder="Search for ID..." name="search" onKeyPress="return isNumberKey(event)" maxlength="11" id="textsend" onKeyUp="success()">
            <span class="input-group-btn">
              <button class="btn btn-outline-info waves-effect my-0"  type="submit" href="#exampleModal3" data-toggle="modal" data-target="#exampleModal3" target="_blank" role="button" id="button" disabled>Time-in</button>
            </span>
          </div>
        </form>
      </div>
    </div>
  </div>
</div>

登录
&时代;
单击“继续”

确认身份: 时间

函数成功(){
if(document.getElementById(“textsend”).value==”){
document.getElementById('button')。disabled=true;
}否则{
document.getElementById('button')。disabled=false;
}
}
函数isNumberKey(evt){
var charCode=(evt.which)?evt.which:event.keyCode
如果(字符码>31&(字符码<48 | |字符码>57))
返回false;
返回true;
}
数据库:


只需在else循环的末尾添加Insert查询,如下所示,然后重试:

<?php
    include_once('connection.php');
    $output = '';
    if(isset($_POST['search'])) {
      $searchq = $_POST['search'];
      $sql =  "SELECT id, fname, lname FROM test WHERE id LIKE '$searchq'" ;
      $result = mysqli_query($conn, $sql);
      $count = mysqli_num_rows($result);
      if ($count == 0) {
        $output ='No results!'; 
      } else {
        while ($row = mysqli_fetch_array($result)) {
          $fname = $row['fname'];
          $lname = $row['lname'];
          $id = $row['id'];
          $output .= '<div>'.$fname.''.$lname.'</div>';
          $InsertSql = "INSERT INTO test(fname,lname,id) VALUES ('$fname','$lname','$id')";
          $res = mysqli_query($conn, $InsertSql);
        }
      }
    } 
?>
给你

include_once('connection.php');
$output='';
如果(isset($_POST['search'])){
$searchq=$_POST['search'];
$sql=“从测试中选择id、fname、lname,其中id类似于“$searchq”;
$result=mysqli\u查询($conn,$sql);
$count=mysqli\u num\u行($result);
如果($count==0){
$output='No results!';
}否则{
while($row=mysqli\u fetch\u数组($result)){
$fname=$row['fname'];
$lname=$row['lname'];
$id=$row['id'];
$output.=''.$fname.'.$lname.';
$id1=$row['id']
$sql1=“更新测试集col\u name=value,其中id='$id1';
if($conn->query($sql1)==TRUE){
echo“新记录创建成功”;
}否则{
echo“Error:”.$sql1.“
”$conn->Error; } } } }

如果引号是整数,请从
$id1
中删除它。

您的代码容易受到SQL注入攻击。您应该使用参数化查询和准备好的语句来帮助防止攻击者使用恶意输入值破坏您的数据库。给出了风险的解释,以及如何使用PHP/mysqli安全地编写查询的一些示例。切勿将未初始化的数据直接插入SQL。“将重新将数据插入数据库”…插入到何处?同一张桌子?另一张桌子?应该重新插入什么-整个记录,或者只是说记录ID匹配?像这样复制数据似乎很奇怪。这样做的原因是什么?但是,是的,您可以直接在PHP中运行另一个查询(或多个查询)来完成该任务,使用搜索查询的结果。重新插入相同的表,它用于考勤,我将列名编号作为主键并自动递增“for Attention”?我不太明白。更新同一条记录并设置一个字段,而不是重新插入整个记录(从而复制数据),不是更好吗?或者有一个子表记录该人员的多个“出勤”记录,以便您可以查看随时间变化的出勤情况?你的要求不是很清楚,所以我只是在猜测。但一般来说,复制数据并不是一个好主意。关系数据库的全部要点是确保没有重复或冗余的数据。“用户将键入其id,如果sumit后有匹配项,则该值将显示在模式上”……该要求与将数据重新插入数据库无关。您不需要这样做才能在模态中显示。要以一种模式显示,您只需要编写一点HTML和CSS技术,这可能是正确的,但您是否停下来问问自己,盲目复制数据是否真的是一个好主意?在正确的关系数据库设计中,为什么会有人想要或需要这样做?这不合逻辑。有时候,挑战需求比简单地提供代码来实现糟糕的解决方案要好。是的,我同意你的观点。但这家伙是编程新手(正如他在stackoverflow档案中提到的),所以我只是回答了他的问题,而没有介绍PDO、数据库设计等可能会让他困惑的术语。他可以通过在初始阶段犯错误来慢慢地学习,但我们可以通过指出方法中的缺陷来加快学习过程。在任何情况下,如果你阅读上面的评论,你会发现这实际上是一个X-Y问题-OP最初有一个不同的要求,没有找到解决方案,现在发明了一个解决方案,它实际上不会解决原来的问题,但问题是关于第二个解决方案的问题,即使它不能解决他们原本想做的事情。所以整个问题本质上是一条死胡同。@Shivram nadar,谢谢它能起作用:)现在我只想在点击提交按钮后如何提交当前日期。哦,是的。我刚刚读了前面的评论。谢谢你纠正我的错误@ADyson。如果他没有改变他的问题,事情会变得更容易。希望他能从你的上述评论中受益。