当前位置: 首页 > 知识库问答 >
问题:

多次插入数据库不工作

颜华池
2023-03-14

我试图一次将多行插入数据库。

用户最多可以添加5个新行,以便将血液结果插入数据库。

有一个添加更多按钮允许他们这样做。

我有一个循环来遍历每个条目,但是当我单击submit时,只会提交一个条目。第一,我不确定我哪里出了问题,任何帮助都将不胜感激。

循环在这个代码块的底部,但我不确定这就是问题所在。

 <?php
session_start();

if (!isset($_SESSION["currentUserID"])) header("Location: login.php");

include('dbConnect.php');

$queryStr=("SELECT * FROM category");
    $dbParams=array();
  // now send the query
  $results  = $db->prepare($queryStr);
  $results->execute($dbParams);

  $dropDown = "";
  foreach($results as $category) {
        $dropdown .= '<option value="' . $category["category_id"] . '">' . $category["category_name"] . '</option>';
  }
?>

<html lang="en">
  <head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
    <meta name="description" content="">
    <meta name="author" content="">

    <title>Welcome</title>

<TITLE>Category and Test</TITLE>
<head>
<!-- Help for code to create dynamic drop downs -->
<script src="https://code.jquery.com/jquery-2.1.1.min.js" type="text/javascript"></script>
<script>
//Referenced for help --lines 81- 95
//https://www.codeproject.com/Questions/893365/Use-data-pulled-out-from-one-mysql-table-and-inser
//https://stackoverflow.com/questions/48270422/insert-values-into-database-from-form-with-drop-downs?noredirect=1#comment83524543_48270422

var numRows = 1;

function getTest(val,x) {
    $.ajax({
    type: "POST",
    url: "get_test.php",
    data:'category_id='+val,
    success: function(data){
        $("#test-list" + x).html(data);
    }
    });
}

function selectCategory(val) {
$("#search-box").val(val);
$("#suggesstion-box").hide();
}

// Referenced for help - https://www.youtube.com/watch?v=kBAPbCDGCuY

 var maxRows=5;
 var x = 1;

 // add rows
$(document).ready(function(e)
{    // add new row or fields
    $("#add").click(function(e)
    {   // if less than 5 then continue to add a new row
        if (x<=maxRows)
        { // add new row with all fields, update name with x to make unique and stop drop downs changing each others values
           var html = '<div class="row" id="container"><label>Category:</label><select name="category' + x + '" id="category-list" class="demoInputBox" onChange="getTest(this.value,' + x +');"><?php echo $dropdown; ?></select><label>Test:</label><select name="test' + x + '" id="test-list' + x + '" class="demoInputBox"><option value="">Select Test</option></select><label>Result:</label><input id="resultchild" class="input" name="result' + x + '" type="double" required><label>Date:</label><input id="datechild" class="input" name="date' + x + '" type="date" required ><label>Low Boundary:</label><input id="lowchild" class="input" name="low' + x + '" type="double" required><label>High Boundary:</label><input id="highchild" class="input" name="high' + x + '" type="double" required><a href ="#" id="remove"> X </a>';
           document.addTest1.count.value=x;
           // update x
           x++;
           // add html below as new row
           $("#container").append(html);
        }
    });
    // take away rows
    $("#container").on('click', '#remove', function(e)
    {
        $(this).parent('div').remove();
        x--;
        document.addTest1.count.value=x;
    });

    // populate values from first row

});

</script>
</head>
<body>
<!-- 
Reference for help -- lines 134 - 144
https://www.codeproject.com/Questions/893365/Use-data-pulled-out-from-one-mysql-table-and-inser
https://stackoverflow.com/questions/48270422/insert-values-into-database-from-form-with-drop-downs?noredirect=1#comment83524543_48270422
-->

<div class="row" id="container">
<label>Category:</label>
<select name="category0" id="category-list" class="demoInputBox" onChange="getTest(this.value,0);">
<option value="">Select Category</option>
<?php
 echo $dropdown;
?>
</select>
<form action="addTest.php" method="post" name="addTest1">
<input type="hidden" name ="count" value="0">
<label>Test:</label>
<select name="test0" id="test-list0" class="demoInputBox">
<option value="">Select Test</option>
</select>
<label>Result:</label><input id="result" class="input" name="result0" type="double" required>
<label>Date:</label><input id="date" class="input" id="date" name="date0" type="date" required>
<label>Low Boundary:</label><input id="low" class="input" name="low0" type="double" required>
<label>High Boundary:</label><input id="high" class="input" name="high0" type="double" required>

<a href ="#" id="add"> Add More</a>
<input class="submit" name="submit" type="submit" value="Submit">
</div>
</form>


<?php

if(isset($_POST['submit'])){

$count = $_POST['count'];
// for loop to iterate through each new row and insert into database
for ($x=0; $x<$count; $x++) {

    $currentUser      = $_SESSION["currentUserID"];
    $currentBloodTest = $_POST['test'.$x];
    $value            = $_POST['result'.$x];
    $date             = $_POST['date'.$x];
    $low            = $_POST['low'.$x];
    $high  = $_POST['high'.$x];

    $query = $db->prepare("INSERT INTO results (user_id, bloodtest_id, date, value, low_boundary, high_boundary)
                           VALUES (?, ?, ?, ?, ?, ?)");
    $query->execute( array($currentUser, $currentBloodTest, $date, $value, $low, $high) );
        echo "<br><br><span>Data Inserted successfully...!!</span>";
    } //end of for loop 
}

?>

</body>
</html>

共有1个答案

章晋鹏
2023-03-14

把你的html部分改成这个。

<form action="addTest.php" method="post" name="addTest1">
<input type="hidden" name ="count" value="0">
<label>Test:</label>
<select name="test0" id="test-list0" class="demoInputBox">
<option value="">Select Test</option>
</select>
<label>Result:</label><input id="result" class="input" name="result[]" type="double" required>
<label>Date:</label><input id="date" class="input" id="date" name="date[]" type="date" required>
<label>Low Boundary:</label><input id="low" class="input" name="low[]" type="double" required>
<label>High Boundary:</label><input id="high" class="input" name="high[]" type="double" required>

<a href ="#" id="add"> Add More</a>
<input class="submit" name="submit" type="submit" value="Submit">
</div>
</form>

在服务器端代码中,您应该使用foreach或使用表单输入控件名称中给定的数组。

看看这个-

 类似资料:
  • 我的PHP代码中的插入数据sql命令不工作。有人能帮帮忙吗? 我有一个注册表,它从输入字段(姓名、姓氏、电子邮件、用户名和密码)中获取值 用户在此字段中输入的值应保存到我的表“users”中,该表有以下列(ID[主键/INT]、name[文本]、lastname[文本]、e-mail[变量字符]、username[变量字符]和password[变量字符])。 这是我目前的代码:

  • 问题内容: 我有一个类似于以下内容的插入语句: 我需要使用多个ID插入同一条语句。现在我有: 我只是必须运行此程序,还是有一个更精简的版本? 问题答案: 使用:

  • 我是android新手,这是我第一次在应用程序中使用room。未执行插入操作或未创建数据库或任何其他错误。 我不知道我做错了什么,所以我需要你的帮助。 此程序正在运行,但未显示任何结果。屏幕上什么都没有显示。 这是我的代码-请让我知道此代码中的错误以及我应该如何更正它。 汽车细节。JAVA 卡多。爪哇- CarListDatabase。JAVA CarRepository.java 公共无效get

  • 问题内容: 我知道一次插入多个数据效率更高: 在golang中该怎么做? 使用字符串拼接,但这不是很好。db.Prepare更安全吧? 我需要一个功能更安全,更高效的函数,一次插入多个数据。 问题答案: 为什么不这样呢?(在此处编写但未进行测试,因此可能存在语法错误):

  • root-context.xml文件是: servlet-context.xml文件是: 我的@Entity类是: 控制台输出为:

  • 问题内容: 从Actor中读取的文件:Zac Efron 传记:他出生于加利福尼亚州的圣路易斯·奥比斯波,并在阿罗约·格兰德附近长大。在几集《夏姆兰》(2004)的客串中,他以女孩疯狂的卡梅隆·贝尔的身份参加常规演出。埃夫隆还出演过许多飞行员,例如卡尔·兰克(Carl Laemke)的《大世界》(2003)(电视)和三重播放(2004)(TV)。 More_Bio:Efron于2006年6月毕业于