php - 如何使用 PHP for 循环按升序将数据插入 ORACLE 数据库?
问题描述
我有这些 html 表单、jQuery 和 php 代码。到目前为止,我设法使用 jQuery 将动态字段添加到表单中,并将数据添加到 Oracle 数据库中。
代码.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>
代码.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 循环添加数据,如下所示。我添加数据没有问题。
代码.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;
请帮我解决这个问题。提前致谢。
解决方案
您在选择数据时遇到的问题,请按 id 顺序选择它
select * from table order by ID asc
推荐阅读
- android - 强制使用http构建缓存gradle
- reactjs - 将数据写入 Firestore 时显示加载指示器
- scala - scala将键的所有映射值添加到队列
- stackdriver - Google Cloud Stackdriver 限制域
- c# - 在编译时使用三元运算符计算字符串常量
- vue.js - 路由器链接未加载组件
- html - 水平滚动不显示右边距
- mqtt - Parse 平台上的 MQTT(开源解析服务器)
- botframework - 无法在 Teams 机器人频道中粘贴魔术代码
- android - 如何导入 com.amazonaws.util.Throwables.failure