簡體   English   中英

如何以多行形式保存用戶名和user_id

[英]how to save username and user_id in multiple row form

我正在使用多行插入...所有行都可以,所有都保存到數據庫中,但是現在我在數據庫中又添加了3行,其中兩行用於標識用戶(用戶名和user_id),另一行用於鏈接所有產品在表單中創建以進行更新(ref_compra)...所以問題是因為這三行沒有像其他項一樣被保存X次,而只保存了一次。

事實是,所有乘積都以形式“ n”次添加到數組中,但是這三個輸入(ref_compra,id_user和nombre)因為它們只是形式一次,而沒有像“ n”次那樣添加單擊按鈕保存時的其他輸入,數組僅捕獲一次...您知道如何像其他輸入一樣添加“ n”次以保存在數據庫中嗎

這部分在表格的開頭,是ref_compra名稱的輸入:

<div class="input-group">
    <div class="input-group-addon">#</div>
    <input type="text" class="form-control required" name="ref_compra[]" id="ref_compra" placeholder="n&uacute;mero de factura de compra" required >
</div>

帶有問題的表格的第二部分在表格的最后:

<p>
   <div class="btn-group btn-block">
       <input type="hidden" name="action" value="create" />
       <input type="hidden" id="nombre" name="nombre[]" type="text" value="<?php echo $userInfo['username']; ?>" /> 
       <input type="hidden" id="id_user" name="id_user[]" type="text" value="<?php echo $userInfo['user_id']; ?>" />    
       <button type="button" class="btn btn-danger" onclick="goBack()"><i class="glyphicons glyphicons-left_arrow"></i> <?php echo ASLang::get('Back to the purchase list'); ?></button>
       <input type="submit" id="submit" class="btn btn-info" value="<?php echo ASLang::get('Add purchase'); ?>" />
  </div>
</p>

這里插入代碼:

$conn->beginTransaction();
                $sql = "INSERT INTO PRODUCTOS 
                (cod, nombreProd, .......... , id_user, nombre, ref_compra)
                 VALUES ";
                $insertQuery = array();
                $insertData = array();
                foreach ($_POST['cod'] as $i => $cod) {
                    $insertQuery[] = '(?, ?,  ........ , ?, ?, ?)';
                    $insertData[] = $_POST['cod'][$i];
                    $insertData[] = $_POST['nombreProd'][$i];
                    ..........
                    $insertData[] = $_POST['id_user'][$i];  // here the user_id
                    $insertData[] = $_POST['nombre'][$i];  // here the username
                    $insertData[] = $_POST['ref_compra'][$i];  // here the ref_compra 
                }
                if (!empty($insertQuery)) {
                    $sql .= implode(', ', $insertQuery);
                    $stmt = $conn->prepare($sql);
                    $stmt->execute($insertData);
                }
                $conn->commit();

我需要知道為什么沒有像保存“ X”次的其他數據那樣保存這三個項目(3、6、10個產品)

這是最后兩個插入數據的捕獲...第一個可以,但是第二個在這三行中為空:

最后兩個數據

借助@Dan08我對其進行了修復,現在我可以將任何行保存為多值形式。

這里的答案:

因此,您需要為每個產品記錄插入一個用戶ID。 如果您發布print_r($ _ POST)的輸出,我可能可以提供更好的答案,但是基本上在您的foreach $ POST循環中,將用戶ID保持靜態:

foreach ($_POST['cantidad'] as $i => $cantidad) {
  $insertQuery[] = '(?, ?, ?)';
  $insertData[] = $_POST['cantidad'][$i];
  $insertData[] = $_POST['nombreProd'][$i];
  $insertData[] = $_POST['Id']; //OR $insertData[] = $_POST['Id'][0], depending on $_POST array
            }

這里的鏈接: 多值形式的靜態值的答案

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM