首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用jquery中继器在mysql中插入多行

使用jquery中继器在mysql中插入多行
EN

Stack Overflow用户
提问于 2021-05-11 10:52:37
回答 2查看 188关注 0票数 1

我有一个表单中继器(https://github.com/DubFriend/jquery.repeater),可以在需要时添加多个输入,但唯一的问题是..我不知道如何在sql中一次插入表单中的所有数据。这就是我到目前为止所做的,为我糟糕的英语道歉,我是一个学习者,你们是最好的。

HTML:

代码语言:javascript
复制
<form action="" method="POST">
        <div class="modal-body">
          <div class="repeater-default">
            <div data-repeater-list="sectiuni" class="col-md-12">
              <div data-repeater-item="">
                <div class="row">
                  <div class="form-group mb-1 col-sm-12 col-md-4">
                    <label for="email-addr">Sectiunea</label>
                    <br>
                    <input type="text" class="form-control" id="sectiunea" name="sectiunea[]" placeholder="Introdu sectiunea">
                  </div>
                  <div class="form-group mb-1 col-sm-12 col-md-2">
                    <label for="pass">Nr.Dansatori</label>
                    <br>
                    <input type="number" class="form-control" name="nrdansatori[]" id="nrdansatori" placeholder="Numarul dansatorilor">
                  </div>
                  <div class="skin skin-flat form-group mb-1 col-sm-12 col-md-2">
                    <label for="tel-input">Timp piesa</label>
                    <br>
                    <input class="form-control" type="text" name="timpsectiune[]" id="timpsectiune" placeholder="2:34">
                  </div>

                  <div class="form-group mb-1 col-sm-12 col-md-2">
                    <label for="pret">Pret</label>
                    <br>
                    <input class="form-control" type="number" name="pretsectiune[]" id="pretsectiune" placeholder="250">
                  </div>
                  <div class="form-group col-sm-12 col-md-2 mt-1">
                    <button type="button" class="btn btn-danger" style="margin-top: 12px;" data-repeater-delete=""> <i
                        class="feather icon-trash"></i> Delete</button>
                  </div>
                  <hr>
                </div>
              </div>
            </div>
            <div class="form-group overflow-hidden">
              <div class="col-12">
                <button type="button" data-repeater-create="" class="btn btn-primary col-sm-12 btn-sm">
                  <i class="feather icon-plus"></i> ADD ONE MORE SECTION
                </button> 
              </div>
            </div>
          </div>
        </div>
        <div class="modal-footer">
          <input type="reset" class="btn btn-secondary" data-dismiss="modal" value="Close">
          <input type="submit" id="save" class="btn btn-success" value="Save">
        </div>
      </form>

Javascript:

代码语言:javascript
复制
$("#save").click(function(e) {
        e.preventDefault();
        var sectiunea    = $("#sectiunea").val();
        var nrdansatori  = $("#nrdansatori").val();
        var timpsectiune = $("#timpsectiune").val();
        var pretsectiune = $("#pretsectiune").val();
        var infos = {
            sectiunea   : sectiunea,
            nrdansatori : nrdansatori,
            timpsectiune: timpsectiune,
            pretsectiune: pretsectiune
        };
        $.ajax({
            type: 'POST',
            data: infos,
            url: 'sql-insert.php',
            success: function(data) {
                if (data === TRUE) {
                    alert('Success'); 
                } else {
                     alert("ERROR");
                }
            }
       });

PHP:

代码语言:javascript
复制
    if(isset($_POST['sectiunea'])) {
    $table = "`".RDCP_PREFIX."sectiuni`";
        $data = array(
            'sectiune' => trim($db->escape($_POST['sectiunea'])),
            'max_d'    => trim($db->escape($_POST['nrdansatori'])),
            'timp'     => trim($db->escape($_POST['timpsectiune'])),
            'pret'     => trim($db->escape($_POST['pretsectiune']))
          );
          foreach ($data as $name) {
         
         $db->insert($table, $data);
          
        }
    } 
public function insert($table,$fields) { 
$field = array_keys($fields); 
$single_field = implode(",", $field); 
$val = implode("','", $fields); 
$stmt = $this->conn->prepare("INSERT INTO ".$table."(".$single_field.") VALUES('".$val."')"); 
$stmt->execute(); 
if($stmt === true) { echo true; } 
else { echo false; } 
}
EN

回答 2

Stack Overflow用户

发布于 2021-05-12 04:24:48

您的insert函数可能是问题所在。您正在将每个列插入到它自己的记录中,您还误用了准备好的语句。您应该像这样编写函数(下面的伪代码):

代码语言:javascript
复制
public function insert($table, $array) { 
    $fields = array_keys($array); 
    $stmt = $this->conn->prepare('INSERT INTO ' . $table . '(' . implode(",", $fields) .') VALUES (' . implode(',', array_fill(0, count($fields), '?')) .')'); 
    $stmt->bind_param(implode('', array_fill(0, count($fields), 's')), ...array_values($array));
    $stmt->execute(); 
    if($stmt === true) { 
        echo true; 
    } else { 
        echo false; 
    } 
}

有关潜在的bind_param问题,请参阅https://stackoverflow.com/a/50654198/3783243

然后这样叫它:

代码语言:javascript
复制
if(isset($_POST['sectiunea'])) {
    $table = "`".RDCP_PREFIX."sectiuni`";
    $data = array(
            'sectiune' => trim($_POST['sectiunea']),
            'max_d'    => trim($_POST['nrdansatori']),
            'timp'     => trim($_POST['timpsectiune']),
            'pret'     => trim($_POST['pretsectiune'])
          );
     $db->insert($table, $data);
}
票数 0
EN

Stack Overflow用户

发布于 2021-05-12 09:16:00

我想我已经做到了这一点,并且正在使用bcz jquery repeater来做像这样的名称:

代码语言:javascript
复制
if(!empty(isset($_POST))) {
    $table = "`".RDCP_PREFIX."sectiuni`";
    foreach($_POST as $key => $value){
        for ($i=0; $i < count($value); $i++) {
            $data = array(
                'sectiune' => $value[$i]['sectiunea'],
                'max_d'    => $value[$i]['nrdansatori'],
                'timp'     => $value[$i]['timpsectiune'],
                'pret'     => $value[$i]['pretsectiune']
              );
          $db->insert($table, $data);
        }
    }  
} 
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67479954

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档