如何使用PHP for循环以升序将数据插入ORACLE数据库?

问题描述 投票:0回答:1

我有这些html表单,jQuery和php代码。到目前为止,我设法使用jQuery向表单添加动态字段,并将数据添加到Oracle数据库中。

code.html

<div id="dynamicForm">
    <button id="" class="add" name="1"> + ADD ITEM</button>
        <table id="">
            <thead>
                <tr>
                    <th>TEXT 1</th>
                    <th>TEXT 2</th>
                    <th>TEXT 3</th>
                </tr>
            </thead>
            <tbody>
                <tr>
                    <td><input type="text" class="" name="name1[]" value="" placeholder=""></td>
                    <td><input type="text" class="" name="name1[]" value="" placeholder=""></td>
                    <td><input type="text" class="" name="name1[]" value="" placeholder=""></td>
                </tr>
            </tbody>
        </table>
    </div>
</div>

Code.js

<script type="text/javascript">
  function formFunc(id, name)
  {
    switch(name)
    {
      case "1":
        return '<div id="dynamicFormA"><button id="" class="add" name="1">+ ADD ITEM</button><table id=""><thead><tr><th>TEXT 1</th><th>TEXT 2</th><th>TEXT 3</th></tr></thead><tbody><tr><td><input type="text" class="" name="name1[]" value="" placeholder=""></td><td><input type="text" class="" name="name1[]" value="" placeholder=""></td><td><input type="text" class="" name="name1[]" value="" placeholder=""></td></tr></tbody></table></div></div>';
        break;
    }
  }
  $(document).ready(function(e){
      $(".add").click(function(e){  
        e.preventDefault();
        var id   = $(this).attr('id');
        var name = $(this).attr('name'); 
        $("#dynamicForm"+id).append(formFunc(id, name));
        return false;
      });
  });
</script>

我设法使用for循环添加数据,如下所示。我没有添加数据的问题。

Code.php

<?php

    // Running no
        $sqlNextSeq         = "SELECT SEQ_TABLE.nextval AS RUNNO FROM DUAL";
        $stid2              = oci_parse($ociconn,$sqlNextSeq);
        oci_execute($stid2);
        $row                = oci_fetch_array($stid2, OCI_RETURN_NULLS); 
        $application_no     = $row["RUNNO"];
    // Running no

    // Data added
        for ( $i=0; $i<count($_POST["name1"]); $i++ ) 
        {
            if($_POST['name1'][$i] != '' || $_POST['name2'][$i] != '' || $_POST['name3'][$i] != '' )
            {
                $sql  = "INSERT INTO TABLE (
                                              ID,
                                              TEXT1,
                                              TEXT2,
                                              TEXT3
                                            )
                                      VALUES(
                                              '".$application_no."',
                                              '".$_POST["name1"][$i]."',
                                              '".$_POST["name2"][$i]."',
                                              '".$_POST["name3"][$i]."'
                                            )
                        ";
                $stid = oci_parse($ociconn,$sq);
                oci_bind_by_name($stid);
                $res  = oci_execute($stid);
                if($res){ echo "Added<br/>";} else { echo "Not added<br/>";}
            }
        }
    // Data added
?>

但不知何故,当数据添加到数据库中时,序列不是有序的。

它期望序列将是这样的

ID              TEXT1           TEXT2           TEXT3
1               NAME1           ADDRESS1        CONTACT1
2               NAME2           ADDRESS2        CONTACT2
3               NAME3           ADDRESS3        CONTACT3

但是数据在Oracle中添加了这样的数据。

ID              TEXT1           TEXT2           TEXT3
3               NAME3           ADDRESS3        CONTACT3
1               NAME1           ADDRESS1        CONTACT1
2               NAME2           ADDRESS2        CONTACT2

顺便说一句,这是我的表,序列和触发器

序列

CREATE SEQUENCE  "DEV"."SEQ_TABLE"  MINVALUE 0 MAXVALUE 9999999999999999999999999999 INCREMENT BY 1 START WITH 1 NOCACHE  NOORDER  NOCYCLE;

触发

create or replace TRIGGER DEV.TRG_TABLE
 BEFORE INSERT ON DEV.TABLE FOR EACH ROW
BEGIN
 SELECT SEQ_TABLE.NEXTVAL INTO :NEW.ID FROM DUAL;
END;

请帮我解决这个问题。提前致谢。

php oracle for-loop dynamic-arrays
1个回答
1
投票

选择数据时出现问题,请按ID排序选择

select * from table order by ID asc
© www.soinside.com 2019 - 2024. All rights reserved.